0

我想找到使用 linq 查询重复的整数个数。例如,我的清单包括

var array = new int[]{1,1,1,2,2,2,2,3,3,9,9,16,16};

现在我想查询,就像我想得到计数1一样3 计数2作为4 计数 计数3作为 计数292162

我如何在 c# 中使用 linq 来做到这一点。希望你能理解我的问题。

4

6 回答 6

13

很简单,使用 LINQGroupBy

var numbers = new int[] { 1, 1, 1, 2, 2, 2, 2, 3, 3, 9, 9, 16, 16 }; 

var counts = numbers
    .GroupBy(item => item)
    .Select(grp => new { Number = grp.Key, Count = grp.Count() });

结果:

Number    Count
1         3 
2         4 
3         2 
9         2 
16        2 
于 2013-06-06T11:29:15.577 回答
1

使用 Linq:

var NumArray= new int[] { 1, 1, 1, 2, 2, 2, 2, 3, 3, 9, 9, 16, 16 };
var counts = NumArray.GroupBy(item => item)
                     .Select(a=>new {Number=a.Key,Count =a.Count()});
于 2013-06-10T12:43:57.050 回答
1
array.GroupBy(x => x)
     .Select(g => new {
                       Val = x.Key,
                       Cnt = x.Count()
                      }
            );
于 2013-06-06T11:28:57.087 回答
1

GroupBy然后可以Count在每个组上使用 LINQ:

var dic = array.GroupBy(x => x)
               .ToDictionary(g => g.Key, g => g.Count());

在这里,如果您有大量列表并且需要经常访问,ToDictionary则可以访问以Dictionary获得更好的性能:Count

int count1 = dic[1]; //count of 1
于 2013-06-06T11:28:59.850 回答
1

使用GroupBy+Count

var groups = array.GroupBy(i => i);

foreach(var group in groups)
    Console.WriteLine("Number: {0} Count:{1}", group.Key, group.Count());

请注意,您需要添加using System.Linq;.

于 2013-06-06T11:31:11.540 回答
0
var array = new int[] {1,1,1,2,2,2,2,3,3,9,9,16,16}; 

var query = from x in array
            group x by x into g
            orderby count descending
            let count = g.Count()
            select new {Value = g.Key, Count = count};

foreach (var i in query)
{
    Console.WriteLine("Value: " + i.Value + " Count: " + i.Count);
}

结果将是;

Value: 1 Count: 3
Value: 2 Count: 4
Value: 3 Count: 2
Value: 9 Count: 2
Value: 16 Count: 2

这是一个DEMO.

于 2013-06-06T11:32:45.920 回答