0

我必须在 Linq Query 中填充下面的类

public class Emp             
{       
    public string name {get; set;}      
    public dynamic Obj { get; set; }       
    public Emp()
    {
        Obj = new ExpandoObject();
    }  
}

public LoadData()  
{
   var emp = (from d in dbContext.Employees         
              select new Emp   
              {  
                 name = d.name,  
                 Obj.DOB = d.DOB,  
                 Obj.BirthPlace = d.BirthPlace  
              }).ToList();

}

OR

    public LoadData()  
    {
       var emp = (from d in dbContext.Employees         
                  select new Emp   
                  {  
                     name = d.name,  
                    Obj.DOB = new ExpandoObject { DOB = d.DOB, BirthPlace =   d.BirthPlace }      }).ToList();

    }

它不允许我像上面那样动态分配属性,谁能帮我实现这一点?

4

3 回答 3

2

试试这个方法:

var emp = (from d in dbContext.Employees         
          select new Emp   
          {  
             name = d.name,  
             Obj = { DOB = d.DOB, BirthPlace = d.BirthPlace } 
          }).ToList();

它与@gowansg 答案非常相似,但没有new关键字。它只是属性值的设置。如果我们会尝试得到Type我们Obj将收到System.Dynamic.ExpandoObject。使用new关键字,它将是一些匿名类型。分别,这样的结构如:

emp[0].Obj.OtherProperty = 1;

在使用匿名类型的情况下将失败。

于 2013-01-14T05:07:24.833 回答
0

您在第二个示例中很接近,您只需要设置Obj等于 anew anonymous object而不是 a new ExpandoObject

var emp = (from d in dbContext.Employees         
          select new Emp   
          {  
             name = d.name,  
             Obj = new { DOB = d.DOB, BirthPlace = d.BirthPlace }
          }).ToList();
于 2013-01-14T05:14:13.733 回答
0

var emp = (from d in dbContext.Employees
select new Emp
{
name = d.name,
Obj = { DOB = d.DOB, BirthPlace = d.BirthPlace }
}).ToList();

于 2013-05-17T04:03:47.000 回答