gpt4 book ai didi

c# - 如何在 LINQ 中分组然后选择元素到新类中(最好是 C#)

转载 作者:行者123 更新时间:2023-11-30 15:04:49 24 4
gpt4 key购买 nike

您好,我正在尝试着手进行分组,然后在结果中构建我自己的类。我知道 group by 的结果是一个 IGrouping 集合,但是我可以访问正在构建的行以使用自定义类向它们添加几个标志吗?

我有一个名为 FlightTimes 的类,其中包含一些数据,但我想将一些数据附加到行中,例如 FlagRedEye。因此,我使用原始 FlightTime 类数据和标志创建了一个名为 FlightTimeResult 的类。

我可以这样做吗?我似乎无法弄清楚如何让它工作。我喜欢使用强类型,直到我明白发生了什么。我不得不更改一些内容以保护我的客户,因此对于任何语法错误我深表歉意。

IGrouping<string, FlightTimeResult> FlightTimes =
( from flighttimes in schedules.FlightTimes
group flighttimes by flighttimes.FlightType.ToString()
into groupedFlights
select new FlightTimeResult( )
{
FlightTimeData = FlightTime, // Original class data
FlagRedEye = (FlightTime.departureTime.Hour >= 0 &&
FlightTime.departureTime.Hour < 6) // Extra flag
} )

目标是获得按 FlightType 分组的 FlightTimesResult(FlightTime + 额外标志)的集合。不确定如何访问查询“select new FlightTimeResult()”中的各个 FlightTime 行

我是否需要对 groupedFlights 使用嵌套查询?

非常感谢。

最佳答案

通过以下方式显式调用 Linq 函数最容易实现:

IQueryable<IGrouping<string, FlightTimeResult>> query 
= schedules.FlightTimes.GroupBy(
ft => ft.FlightType.ToString(), // key
ft => new FlightTimeResult() { // your constructed objects for key
FlightTimeData = ft,
FlagRedEye = (ft.departureTime.Hour >= 0 && ft.departureTime.Hour < 6)
}
);

two-argument GroupBy operator function将两个 lambda 作为参数——一个用于提取键,第二个用于为其提取值。

还要记住,group by 操作(无论是 group itm by key 构造还是 GroupBy 调用)返回 IGrouping<,> 的集合s - 不是一个。

因此它将是IEnumerable<IGrouping<,>>IQueryable<IGrouping<,>> .

关于c# - 如何在 LINQ 中分组然后选择元素到新类中(最好是 C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9728968/

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