这是一个已经被问到的问题,但that question只能使用2个属性,我需要使用3个属性,所以我复制粘贴大部分文本 .
我们假设我们有一个类似的课程
class Person {
internal int PersonID;
internal string car ;
internal string friend ;
}
现在我有一个这个类的列表:列出人员;
现在,此列表可以具有多个相同PersonID的实例,例如 .
persons[0] = new Person { PersonID = 1, car = "Ferrari" , friend = "Josh" };
persons[1] = new Person { PersonID = 1, car = "BMW" , friend = "Olof" };
persons[2] = new Person { PersonID = 2, car = "Audi" , friend = "Gustaf" };
有没有办法我可以按人员ID分组并获得他拥有的所有汽车和朋友的列表?对于前者预期的结果将是
class Result {
int PersonID;
List<string> cars;
List<string> friends;
}
从我到目前为止所做的:
IEnumerable resultsForDisplay = ResultFromSQL_Query.GroupBy(
p => p.PersonId.ToString(),
p => p.car,
(key, g) => new { PersonId = key, car = g.ToList()});
但现在我坚持在 resultsForDisplay
获取 friend's
数组
1 回答
当然,您也可以在组
g
上执行LINQ查询,例如:或者使用lambda表达式:
因此,您可以对一个组执行任何LINQ查询(因此在该组的元素上表现为
IEnumerable<>
),如.Select(..)
,还有.Sum(..)
,_ _1187911_和其他子查询,聚合等 .