2017-09-05 25 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());