LINQ识别连续出现的符合条件的第一行

时间:2019-06-21 10:15:55

标签: linq

让我们说这张桌子存储了每天的高温

date        high temperature
====        ===========    
5/15        98
5/14        97
5/13        92
5/12        82
5/11        93
5/10        91
5/9         88

如果最近的日期在90以上,则我希望连续出现的最早的日期在90以上。在上面的数据集中,我想要的是5/13。

我尝试过的

var consecutives = records.OrderByDescending(i=>i.Date).TakeWhile(i=>i.Temperature > 90);
var earliest = consecutives.Min(i=>i.Date);

是否有更有效的方法?

1 个答案:

答案 0 :(得分:1)

您只需在TakeWhile之后获得最新的商品:

var earliset = records
   .OrderByDescending(i => i.Date)
   .TakeWhile(i => i.Temperature  > 90)
   .LastOrDefault();

如果最近的行的温度低于90,则将返回null。