C# 使用linq构建新对象
我有一个db中的对象,如下所示: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
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单个表。