绝对-您基本上想要:
var results = from p in persons group p.car by p.PersonId into g select new { PersonId = g.Key, Cars = g.ToList() };或作为非查询表达式:
var results = persons.GroupBy( p => p.PersonId, p => p.car, (key, g) => new { PersonId = key, Cars = g.ToList() });基本上,该组的内容(当视为时
IEnumerable<T>)是
p.car给定键在投影中(在这种情况下)呈现的任何值的序列。
有关如何
GroupBy工作的更多信息,请参阅我在Edulinq上有关该主题的帖子。
(在上文中,我已重命名
PersonID为
PersonId,以遵循.NET命名约定。)
另外,您可以使用
Lookup:
var carsByPersonId = persons.ToLookup(p => p.PersonId, p => p.car);
然后,您可以非常轻松地为每个人购买汽车:
// This will be an empty sequence for any personId not in the lookupvar carsForPerson = carsByPersonId[personId];



