문제

I am using Massive micro-orm and SQL server 2008R2 with .NET framework 4.0.

// This is my model
    public class sUser : DynamicModel
    {
      public sUser() : base(Model.strConnection, "Users", "UserId") { }
    }

and another class...

    using System;
    using System.Data;
    using System.Data.SqlClient;
    using System.Linq;
    using System.Web;
    using System.Xml;
    using System.Dynamic;
    using System.Collections.Generic;
    using Massive;

    public class Test
    {
    public dynamic GetUser(string uName)
    {
        dynamic table = new sUser();
        var objUser = table.FindBy(UserName: uName);

        //Tried following...
       //var objUser = new sUser().All().Where(u => u.UserName.ToString() == uName).FirstOrDefault();
    //var objUser = new sUser().All().Where(u => u.UserName.ToString().Equals(uName)).FirstOrDefault();

        return objUser;
    }

    public void GetSomething(dynamic testObj, string user)
{
    dynamic User = GetUser(user);

      //testObj.CUser = User["FirstName"] + ' ' + User["LastName"];
      //Would like to access User object like
      //User.FirstName or User["FirstName"]

      //And not like this...
            foreach (var item in User)
            {
                testObj.CUser = item.FirstName + ' ' + item.LastName;
            }
}
}

I would like to access User dynamic object like User.FirstName or User["FirstName"]. It is possible, or am I missing something?

Any input is highly appreciated.

Thanks.

도움이 되었습니까?

해결책

You will have to use First method instead of findby

Them you will be able to access properties like this:

testObj.CUser = User.FirstName + User.LastName;   

Full working console app:

 class Program
{

    static void Main(string[] args)
    {
        dynamic testObj = new ExpandoObject();
        test t = new test();
        t.GetSomething(testObj, "TestUserName");
        Console.WriteLine(testObj.CUser);
        Console.ReadLine();
    }

}
public class test
{
    // This is my model
    public class sUser : DynamicModel
    {
        public sUser()
            : base("test",
                    "Users",
                    "UserId") { }
    }
    public void GetSomething(dynamic testObj, string user)
    {
        dynamic User = GetUser(user);
        testObj.CUser = User.FirstName + User.LastName;

    }
    public dynamic GetUser(string uName)
    {
        dynamic table = new sUser();
        var objUser = table.First(UserName: uName);

        return objUser;
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top