簡體   English   中英

LINQ 查找具有相應時間字段的最大值/最小值

[英]LINQ find max/min value with corresponding time fields

我有一個氣象站的數據記錄表,我從中查詢結果到 WPF ListBox

表結構為:

  • 日期
  • 時間
  • 溫度
  • 今天下雨
  • 濕度
  • ETC

我有一個工作正常的查詢:

var q = from c in db.Apr11log
                group c by c.LogDate into g
                orderby g.Key
                select new
                {
                    LogDate = g.Key,
                    MaxTemp = g.Max(c => c.Temp),
                    MinTemp = g.Min(c => c.Temp),                                             
                    Rain = g.Max(c => c.Rain_today),
                };      

但是我正在嘗試獲取 Max Temp 和 Min Temp 的相應時間,即

TimeMax = .....
TimeMin = .....

我用谷歌搜索和搜索,但沒有發現任何有用的東西。

var q = from c in db.Apr11log
        group c by c.LogDate into g
        orderby g.Key
        select new
        {
            LogDate = g.Key,
            MaxRow = g.OrderByDescending(c => c.Temp).Select(c => new { c.LogDate, c.Temp }).First(),
            MinRow = g.OrderBy(c => c.Temp).Select(c => new { c.LogDate, c.Temp }).First(),
            Rain = g.Max(c => c.Rain_today),
        };

或者

var q = from c in db.Apr11log
        group c by c.LogDate into g
        orderby g.Key
        let maxRow = g.OrderByDescending(c => c.Temp).First()
        let minRow = g.OrderBy(c => c.Temp).First()
        select new
        {
            LogDate = g.Key,
            MaxTemp = maxRow.Temp,
            MaxTempDate = maxRow.LogDate,
            MinTemp = minRow.Temp,
            MinTempDate = minRow.LogDate,
            Rain = g.Max(c => c.Rain_today),
        };
let maxTemp = c.Max(c=>c.Temp)
let minTemp = c.Min(c=>c.Temp)
select new {
    LogDate = g.Key,
    MaxTemp = maxTemp,
    MinTemp = minTemp,
    MaxTime = g.FirstOrDefault(c=>c.Temp = maxTemp).Time,
    MinTime = g.FirstOrDefault(c => c.Temp = minTemp).Time,
    Rain = g.Max(c => c.Rain_today),
       };      

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM