我有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() });
