2012-03-05 83 views
5

我想要一個方法來從IQueryable公式返回字典字典。通常情況下,從IQueryable字典字典

Dictionary<int, Dictionary<DateTime, string>> 

起初,我看了一下,當然ToDictionary(),但無法找到一個方法來聲明後,其他兩個一。然後,我在ToLookup()上工作,我有一種方法可以用一個ILookup和字符串作爲我的輔助字典(DateTime.Tostring()+另一個字符串)...你跟着嗎? :) 但我不覺得ILookup解決方案真正舒適(解析日期字符串,當我接收到的數據 - >字符串到日期.. beuark)

這將使類似的東西

return this.ttdc.Trackers.GroupBy(t => new { TrackerTaskId = t.TrackerTaskID, DateGenerated = t.TrackerDateGenerated }) 
        .Select(t => new { taskId = t.Key.TrackerTaskId, DateGenerated = t.Key.DateGenerated, count = t.Count() }) 
        .ToLookup(k => k.taskId.Value, k => k.DateGenerated.Value.ToString() + "|" + k.count); 

現在,我想創建一個自我創建的類的列表與我需要的3個信息作爲屬性。

你能幫我選擇最好的模式嗎?此方法託管在Windows服務上,我想限制傳輸到客戶端的數據量。

謝謝

回答

4

下面是一個例子,使用GroupByToDictionary

var testValues = new[]{new {ID = 1, Date = new DateTime(2010,1,1), Str = "Val1"}, 
         new {ID = 1, Date = new DateTime(2011,2,2), Str = "Val2"}, 
         new {ID = 2, Date = new DateTime(2010,1,1), Str = "Val3"}}; 
var dict = testValues.GroupBy(item => item.ID) 
        .ToDictionary(grp => grp.Key, 
            grp => grp.ToDictionary(item => item.Date, 
                  item => item.Str)); 
+0

這工作,感謝幫助......即使我有點慚愧以前沒有嘗試過這一點。 – Gloups 2012-03-05 15:52:21