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)
您可以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)