2016-07-21 6 views
2

나는 키로 ID와리스트로 된 값을 갖는 Dictionary을 가지고있다. 얼마나 많은 목록이 목록 안에 있는지 계산하고 싶습니다. 이것은 디버깅하는 동안 쿼리 할 때 올바른 값을 제공하는 것처럼 보입니다.하지만 데이터에 액세스하려고 시도 할 때 2가 아닌 1의 수를 제공합니다. 나는 누락 된 것이지만 반드시 넣을 수는 없다고 확신합니다. 내 손가락.사전에서 값의 수를 얻는다. C#

는 여기에 내가 디버깅을 통해 확인 백작 : enter image description here

을 그리고 여기 2의 개수에 액세스하려고 할 때 그것을이다 : enter image description here

전체 방법은 다음과 같습니다

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

했나 당신은'foreach (var 목록에 YourDictionary.Value) {// ..}' –

+0

왜 안 availableStats.Count()? – Prashant

+0

@Prashant 또는 아마도 availableStats.Value.Count()? –

답변

5

디버거는 사용자가 사전에 하나의 항목이 있고 그 항목이 2 개의 요소가있는 목록임을 보여줍니다. 코드가 사전에 항목의 수를 가지고 있기 때문에 당신이 사전에 모든 목록에있는 모든 항목의 수를 얻으려면

1을 받고있어, LINQ를 시도하고 Sum :

availableStats.Values.Sum(x => x.Count) 
+0

대단히 감사합니다! 그게 정확히 내가 한 것입니다. 나는 이것을 시간이 허용 할 때 받아 들일 수있는 대답으로 추가 할 것입니다. – Novastorm

관련 문제