2017-09-05 53 views
0

我有一個IEnumerable<ValueObj>對象,其中有多個有效的ValueObj對象。我想通過Id對這些對象進行分組,並接收Dictionary<Guid, IEnumerable<ValueObj>>,其中密鑰爲ValueObj,其值爲ValueObjLINQ GroupBy返回給定對象的字典作爲值

public class ValueObj 
{ 
    public Guid Id { get; set; } 
    public string Name { get; set; } 
    public DateTime Time { get; set; } 
    public double Result { get; set; } 
} 

我試着惹的LINQ GroupBy但沒有成功

IEnumerable<ValueObj> persons = ...; 
var results = persons.GroupBy(
    p => p.Id, 
    p => p, 
    (key, g) => new { PersonId = key, Cars = g.ToList() }); 
+5

在哪裏查詢?你得到什麼錯誤? –

+2

你有沒有考慮過使用'ToLookup'? – mjwills

+0

所以你有多個'ValueObj'實例共享相同的'Guid'? – HimBromBeere

回答

4

試試這個:

IEnumerable<ValueObj> col = ...; 
var dict = col.GroupBy(x => x.Id).ToDictionary(x => x.Key, x => x.ToList());