Convert or map a list of class to another list of class by using Lambda or LINQ?
将一个类转换为另一个类列表的问题和答案很酷。如何将mydata列表转换为另一个mydata2列表?例如:
1 2 3 4 5
| List <MyData > list1 = new List <MyData >();
// somewhere list1 is populated
List <MyData2 > list2 ;
// Now I need list2 from list1. How to use similar LINQ or Lambda to get
list2 = ... ? |
我在这里尝试过,但我无法找出完整的代码:
1 2 3 4 5 6 7
| list2 = (from x in list1 where list1 .PropertyList == null
select new MyData2 ( null, x .PropertyB, x .PropertyC).
Union (
from y in list1 where list .PropertyList != null
select new MyData2 ( /* ? how to loop each item in ProperyList */
y .PropertyB, y .PropertyC)
).ToList(); |
号
其中mydata2具有类似于ctor的(字符串、字符串、字符串)。
如果这两种类型不同,您将使用相同的选择映射到新列表。
1 2 3 4 5 6
| list2 = list1 .Select( x => new MyData2 ()
{
//do your variable mapping here
PropertyB = x .PropertyB,
PropertyC = x .PropertyC
} ).ToList(); |
编辑以添加:
既然你改变了你的问题。你可以这样做来修正你想做的事情。
1 2 3 4 5 6 7 8 9 10 11
| list2 = list1 .Aggregate(new List <MyData2 >(),
(x, y ) =>
{
if (y .PropertyList == null)
x .Add(new MyData2 (null, y .PropertyB, y .PropertyC));
else
x .AddRange(y .PropertyList.Select(z => new MyData2 (z, y .PropertyB, y .PropertyC)));
return x ;
}
); |
号
- 我更新了我的代码,部分代码。这种情况下,我必须考虑到propertylist是否为空。如何在那里绘制地图?
- 我喜欢这个。顺便说一下,在我的部分代码中,我尝试使用union,我使用rob"title="通过lambda或linq将类列表转换或映射到另一个类列表">stackoverflow.com/questions/1178891/&hellip;elliott。聚合和联合有什么区别?
1
| list2 = list1.ConvertAll<MyData>( a => a.MyConversion() ) |
- myConversion()的详细内联lambda表达式如何?
- 我明白你的意思。myConversion()是在myData2类中定义的方法。
- 实际上,Convertall不工作。我使用list1.selectmany(..).tolist()并且没有编译错误。是吗?
- 使用有效的工具!尽管Convertall也应该工作。
- selectMany()正在工作或正在编译错误,但是当我尝试converrall()时,我得到了编译错误。问题是,我需要从a.myConversion()获取myData的列表,因为a.propertyList包含多个值。
- 我是说selectMany()没有编译错误。对不起,打字错误。