我有一个Dictionary
,其中有一个ID作为键,列表列表作为值。我想知道列表中有多少列表。当我在调试时查询它时,这似乎给出了正确的值,但是当我去尝试访问那些数据时,它只给出1而不是2的数量。我确定这是我缺少但我不能放的东西我的手指在上面。
整个方法是:
public static List<string> getStatisticsCSVHeaders(List<Items> itemList, Dictionary<int, List<List<Statistic>>> availableStats)
{
List<string> topRow = new List<string>();
for (int i = 0; i < availableStats.Values.Count; i++)
{
topRow.Add("Phase " + (i+1));
for (int k = 0; k < itemList.Count; k++)
topRow.Add(getMetricHeader(itemList[k], true));
}
return topRow;
}
我希望列表中的列表数量为行i < availableStats.Values.Count
的计数器。
编辑:
我应该提一下,我已经尝试availableStats.Values[0].Count
,但这不会编译。
答案 0 :(得分:5)
调试器显示您的词典中有一个项目,该项目是包含2个元素的列表。因为你的代码占用了字典中的项目数,你得到1。
要获取该词典中所有列表中所有项目的数量,请尝试LINQ和Sum
:
availableStats.Values.Sum(x => x.Count)
答案 1 :(得分:0)
在您的问题中,由于value包含一个列表,因此它可能包含空值,因此有必要对值进行空值检查,否则在LINQ查询中会出现错误。
var totalCount = availableStats.Values.Sum(x => x==null? 0 : x.Count);
还有另一种获得相同结果的方法,如下所示:
var totalCount = availableStats.Sum(x => x.Value==null? 0 : x.Value.Count);