我想在C#中使用linq计算列表中每个元素的数量

huz*_*efa 0 c# linq list count time-complexity

我写了这段代码,它工作正常。有没有更好的方法LINQ可以减少时间复杂度。

List<int> list = new List<int>() { 1, 2, 3, 1, 2, 3, 1, 2, 7, 2, 2 };

var distinctList = list.Distinct();

var listWithCount = distinctList.Select(q=>new { num=q, count = list.Count(number=>number==q) });

foreach(var number in listWithCount)
{
    Console.WriteLine("num : " + number.num + "  count : " + number.count);
}
Run Code Online (Sandbox Code Playgroud)

Abi*_*n47 5

您可以GroupBy与一起使用ToDictionary

List<int> list = new List<int>() { 1, 2, 3, 1, 2, 3, 1, 2, 7, 2, 2 };

Dictionary<int, int> counts = list.GroupBy(x => x)
                                  .ToDictionary(k => k.Key, v => v.Count());
Run Code Online (Sandbox Code Playgroud)