Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用linq构建新对象_C#_.net_Linq - Fatal编程技术网

C# 使用linq构建新对象

C# 使用linq构建新对象,c#,.net,linq,C#,.net,Linq,我有一个db中的对象,如下所示: Var oldobject = context.db.getValues()// Do db operations and get values. 我需要从旧对象构建新列表,每个新对象对象有四个属性: Public class newClass { Public int id {get;set;} Public string description {get;set;} Public string variation {get;set;} Pu

我有一个db中的对象,如下所示:

Var oldobject = context.db.getValues()// Do db operations and get values.
我需要从旧对象构建新列表,每个新对象对象有四个属性:

Public class newClass
{
  Public int id {get;set;}
  Public string description {get;set;}
  Public string variation {get;set;}
  Public string size {get;set;}
}
所有这些信息都以oldobject的形式显示,但格式不同,如: Oldobject包含两个对象:

Oldobject
   [0] 
      Type      null
     >Menu->
                      Name                   “sample” 
                      -> Layouts            count =4
                           ->[0]
                               Size                                 “1”
                              ->One more collection   count=4
                                  ->[0]     
                                      ->Id                      1
                                          Variation         “Variance”
                                           Description     “Test”
   [1]                       

     I am expecting the newobject contains all the iterated data from the oldobject where,
“大小”“一个或多个集合”对象的公共字段,因此
列表

{
Size:1
Id:1
Variation:”Variance”
Description: “Test”   
},
{
Size:1
Id:2
Variation:”Variance2”
Description: “Test2”
}
……等等

每个数据都是动态的,“Layouts”也可以包含100项,而OldObject也可以包含100项。
我如何在不使用forloop的情况下提取这些信息,或者就性能而言,一个对象一个对象地循环可以吗

这应该适合您:

List<newClass> result = oldObject.Menu.Layouts
    .SelectMany(l => l.OneOrMoreCollection
        .Select(c => new newClass
        {
            id = c.Id,
            variation = c.Variation,
            description = c.Description,
            size = l.Size
        }))
        .ToList(); 
List result=oldObject.Menu.Layouts
.选择多个(l=>l.OneOrMoreCollection
.选择(c=>newClass
{
id=c.id,
变化=c.变化,
描述=c.描述,
尺寸=l.尺寸
}))
.ToList();
您需要使用“Join”语句来查询数据库,并从数据库中获取bcack单个表。