11

我有一本看起来像这样的字典:

Dictionary<String, List<String>>

test1 : 1,3,4,5
test2 : 2,3,6,7
test3 : 2,8

如何使用 LINQ 和 LINQ 扩展获取所有值的计数?

4

3 回答 3

46

假设您有:

Dictionary<String, List<String>> dict = ...

如果你想要列表的数量,它很简单:

int result = dict.Count;

如果您想要所有列表中所有字符串的总数:

int result = dict.Values.Sum(list => list.Count);

如果要计算所有列表中所有不同字符串的计数:

int result = dict.Values
                 .SelectMany(list => list)
                 .Distinct()
                 .Count();
于 2012-08-14T14:34:12.580 回答
6

怎么样

yourdictionary.Values.Sum(l => l.Count);
于 2012-08-14T14:34:44.390 回答
0

如果您想分别计算每个项目:

dict.Values.SelectMany(s => s).GroupBy(s => s)
    .Select(g => new {Value = g.First(), Count = g.Count});

使用您的样品,您将获得:

"1", 1; "3", 2; "4", 1; “5”,1,“6”,1;"7", 1; "8", 1

于 2012-08-14T14:38:41.070 回答