将类转换为另一个类列表的问题和答案很酷.如何将MyData列表转换为另一个MyData2列表?例如:
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 = ... ?
Run Code Online (Sandbox Code Playgroud)
在这里我尝试了这个,但我无法弄清楚完整的代码:
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();
Run Code Online (Sandbox Code Playgroud)
其中MyData2有一个CTOR(字符串,字符串,字符串).
Sta*_* R. 32
如果两种类型不同,您可以使用相同的选择映射到新列表.
list2 = list1.Select( x => new MyData2()
{
//do your variable mapping here
PropertyB = x.PropertyB,
PropertyC = x.PropertyC
} ).ToList();
Run Code Online (Sandbox Code Playgroud)
编辑添加:
现在你改变了你的问题.你可以做这样的事情来解决你想要做的事情.
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;
}
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25755 次 |
| 最近记录: |