gpt4 book ai didi

c# - 在具有 2 个属性的 LINQ 中分组

转载 作者:太空宇宙 更新时间:2023-11-03 19:46:47 24 4
gpt4 key购买 nike

这是一个已经问过的问题,但是 that question是只使用 2 个属性,我需要使用 3 个属性,所以我复制粘贴了大部分文本。

假设我们有一个类

class Person { 
internal int PersonID;
internal string car ;
internal string friend ;
}

现在我有这个类的列表:List persons;

现在这个列表可以有多个相同 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" };

有没有一种方法可以按 PersonID 分组并获取他拥有的所有汽车和 friend 的列表?例如,预期结果将是:

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 数组

最佳答案

当然,您可以对组 g 执行 LINQ 查询还有,比如:

IEnumerable<Result> resultsForDisplay = from q in ResultFromSQL_Query
group q by q.PersonID into g
select new <b>Result</b> {PersonID = g.Key,<b>cars = g.Select(x => x.car).ToList(), friends = g.Select(x => x.friend).ToList()</b>};

或者使用lambda 表达式:

IEnumerable<Result> results = persons.GroupBy(x => x.PersonID)
.Select(g => new Result { PersonID = g.Key, <b>cars = g.Select(x => x.car).ToList(), friends = g.Select(x => x.friend).ToList()</b>};

因此您可以对组执行任何 LINQ 查询(因此在该组的元素上表现为 IEnumerable<>),如 .Select(..) , 还有 .Sum(..) , .Average(..)和其他子查询聚合等。

关于c# - 在具有 2 个属性的 LINQ 中分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44556408/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com