E. *_* K. 4 c# linq ienumerable join sql-to-linq-conversion
IList<MyObject> ob1 = {new MyObject {Id = "1", Items = {BananaObject1, BananaObject2}}}
IList<MyObject> ob2 = { new MyObject {Id = "1", Items = {BananaObject2, BananaObject3}},
new MyObject {Id = "2", Items = {BananaObject3, BananaObject3}}}
Run Code Online (Sandbox Code Playgroud)
我想合并2个列表,以便得到结果列表
IList<MyObject> ob2 = { new MyObject {Id = "1", Items = {BananaObject1, BananaObject2, BananaObject3}},
new MyObject {Id = "2", Items = {BananaObject3, BananaObject3}}}
Run Code Online (Sandbox Code Playgroud)
因此,由于2个列表中第一个项目的ID相同,因此它们成为一个,并且其中一个属性被连接起来.
我可以做一个for循环来实现这一点,但我正在为此寻找一个整洁的最佳性能linq表达式.
谢谢
Concat列表一起,GroupById属性,SelectMany以获取合并的项目列表:
ob1.Concat(ob2)
.GroupBy(o => o.Id)
.Select(g => new MyObject()
{
Id = g.Key,
Items = g.SelectMany(o => o.Items ).Distinct().ToList()
});
Run Code Online (Sandbox Code Playgroud)