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受信ObjSystem.Dynamic.ExpandoObjectます。newキーワードを使用すると、匿名型になります。それぞれ、次のような構造:

emp[0].Obj.OtherProperty = 1;

匿名型を使用すると失敗します。

于 2013-01-14T05:07:24.833 に答える
0

var emp = (dbContext.Employees の d から
新しい Emp を選択します
{
name = d.name,
Obj = { DOB = d.DOB, BirthPlace = d.BirthPlace }
}).ToList();

于 2013-05-17T04:03:47.000 に答える
0

あなたはあなたの2番目の例に近かった. a の代わりにObja に等しく設定する必要があるだけです:new anonymous objectnew 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 に答える