【发布时间】:2016-05-17 08:36:28
【问题描述】:
我是 C# 新手,正在尝试回答一些 LINQ 问题。我被困在第一个标记为困难...
问:平均出发延误最多的前 10 个始发机场是哪些,包括这些延误的数值? (提示:使用 group by)?
我有一个名为“Flights”的列表,其中包含超过 20000 个类“FlightInfo”的对象。
FlightInfo 类的属性是: string Carrier, string Origin, string Destination, int DepartureDelay, int ArrivalDelay, int Cancelled, int Distance.
我知道我应该按 FlightInfo.Origin 对 FlightInfo 进行分组,然后按 FlightInfo.DepartureDelay 对每个组进行平均,然后显示平均延迟最高的 10 个,但除了分组之外,我完全不知道如何进一步进行。
提前感谢您的帮助!
这是我之前能够回答的问题之一的示例:
问:航班的加权到达延迟是它的到达延迟除以距离。从马萨诸塞州波士顿起飞的加权到达延迟最大的航班是什么?
答:
var weighted = (from FlightInfo in Flights
where FlightInfo.Origin == "Boston MA"
orderby (FlightInfo.ArrivalDelay / FlightInfo.Distance) descending
select FlightInfo).Take(1);
【问题讨论】:
-
已回答问题的旁注:
Take返回IEnumerable<T>如果您想要T实例,请使用First或FirstOrDefault -
是的,我看到当我使用
First时,我可以在不使用foreach循环的情况下访问属性。谢谢,我之前不明白为什么我不能Console.WriteLine(weighted.Origin)。