2012-03-05 50 views
5

Tôi muốn một phương thức trả lại một từ điển từ điển từ một công thức IQueryable. Thông thường,Từ điển từ điển của IQueryable

Dictionary<int, Dictionary<DateTime, string>> 

Lúc đầu, tôi nhìn ToDictionary() tất nhiên nhưng không thể tìm cách khai báo hai cái sau cái kia.

Sau đó, tôi loooked tại ToLookup() và tôi có một cách để thực hiện điều này với một ILookup với chuỗi là từ điển thứ cấp của tôi (DateTime.Tostring() + chuỗi khác) ... bạn làm theo? :) Nhưng tôi không tìm ra giải pháp ILookup thực sự confortable (phân tích một ngày để chuỗi và khi tôi nhận được dữ liệu -> chuỗi cho đến nay .. beuark)

Điều đó sẽ cung cấp cho một cái gì đó như thế

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); 

Bây giờ, tôi đang nghĩ đến việc tạo Danh sách lớp tự tạo với 3 thông tin tôi cần làm tài sản.

Bạn có thể giúp tôi chọn mẫu tốt nhất không? Phương pháp này được lưu trữ trên một dịch vụ windows và tôi muốn giới hạn lượng dữ liệu được truyền cho khách hàng.

Cảm ơn bạn

Trả lời

4

Dưới đây là một ví dụ, sử dụng 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

Đó làm việc, nhờ giúp đỡ ... thậm chí nếu tôi một chút xấu hổ vì đã không cố gắng này trước đây. – Gloups

Các vấn đề liên quan