繁体   English   中英

如何将列表缩小到C#中相同项目的最大数量

[英]How to narrow list down to a max number of same items in C#

假设我在一个名为'array'的数组中有这个列表:

[0]a.1 
[1]b.1 
[2]c.1 
[3]d.1 
[4]e.2 
[5]f.2 
[6]g.2 
[7]h.3

我想用C#将它缩小到一个列表中最多有两个相同数字的列表,所以它看起来像这样:

[0]a.1 
[1]b.1 
[2]e.2 
[3]f.2 
[4]h.3

我试图使用'GroupBy':

var Groups = array.GroupBy(i => i);
var Result = Groups.SelectMany(iGroup => iGroup.Take(2)).ToArray();

但我不确定如何只考虑点后的内容,而不是整个项目

我不确定如何只考虑点之后的内容,而不是整个项目

如果保证存在点,则在点上拆分,然后取第二项:

var Groups = array.GroupBy(i => i.Split('.')[1]);

使用SelectManyTake(2)的其余代码是正确的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM