使用C#计算数组中的数字超过一定水平

时间:2012-03-17 08:19:51

标签: c# arrays linq comparison numbers

我有一系列数字:

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;

3 个答案:

答案 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