Skip to main content
 首页 » 编程设计

c#之如何使用Linq从匿名IEnumerable集合中选择项目

2024年01月13日29落叶

我有2个IEnumerable集合,其中包含一个字符和该字符的计数(即s1 {Key ='a'Count ='5'}和s2 {Key ='a'Count ='4'})

我想对Linq查询执行以下操作:

如果该项目在两个集合中,则我只希望该集合中的项目具有更高的计数,即s = 1中的Count = 5

如果该项目仅在一个集合中,则我们使用该项目(不能使用Distinct,因为它说IEnumerable Anonymous不包含Distinct)

如果这些项目在两个集合中,但它们的数量相等,那么我们使用哪个都无所谓。

无法弄清楚这部分,我很确定一旦看到解决方案,我就想把头撞到墙上...

请您参考如下方法:

您可以按Key分组并选择最大Count:

var collection1 = "testtt".GroupBy(c => c).Select(g => new { Key = g.Key, Count = g.Count() }); 
var collection2 = "teessst".GroupBy(c => c).Select(g => new { Key = g.Key, Count = g.Count() }); 
 
var result = collection1.Concat(collection2) 
    .GroupBy(item => item.Key, item => item.Count) 
    .Select(g => new { Key = g.Key, Count = g.Max() });