我有一系列数字:
int[] array = new int[]{ 18, 5, 10, 12, 15, 18 };
如何计算某个级别以上的所有数字(不重复)? LINQ会不会有任何帮助?
例如 - 3 数字高于10(18和15,12)。
只有 1 数字高于15( 18,18实际上是相同的数字)。
编辑(抱歉忘了这个)
是否可以计算超过一定水平的重复次数?
即。在我的“15”例子中,将有2次重复
编辑2
我的“分组”方式
int count1 = array.Where(x => x > 15).Distinct().Count();
int count2 = array.Where( x => x > 15).Count();
int count3 = count2 - count1;
答案 0 :(得分:5)
int count = array.Where(x => x > 15).Distinct().Count();
答案 1 :(得分:2)
进一步计算群组中的数字:
int[] array = { 1, 2, 3, 44, 55, 66, 44, 1 };
var x = array.GroupBy(t => t).Where(g => g.Key > 10).Select(g=>
new {
Number = g.Key,
Count = g.Count()
});
foreach (var n in x)
{
Console.WriteLine("Number{0}\nCounts:{1}", n.Number, n.Count);
}
答案 2 :(得分:0)
计算减去副本(输出4):
int[] array = new int[] { 18, 5, 10, 12, 15, 18 };
int count = array.Where(i => i > 10).Distinct().Count();
重复计算(输出2:18& 18)
int duplicateCount = array.Where(w => w > 10).GroupBy(g => g).Where(w => w.Count() > 1).SelectMany(s => s).Count();
或者你的酷解决方案:
int count1 = array.Where(x => x > 10).Distinct().Count();
int count2 = array.Where(x => x > 10).Count();
int count3 = count2 - count1;
参考文献:
Remove duplicates from array
Remove duplicates from a List<T> in C#
how to find and print the duplicates values in array in c#?
How to Count Duplicates in List with LINQ