簡體   English   中英

在具有內部聯接的LINQ查詢中選擇最新日期

[英]Select the most recent date in a LINQ query with an inner join

我有一個LINQ查詢,查詢兩個表,並成功返回記錄。 我希望它只返回最近的記錄,但是我無法使其正常工作。 它返回所有記錄,沒有錯誤。

我的查詢是:

  var viewModel = from area in db.area
                  join sample in db.sample on area.location_id equals sample.location_id
                  from s in db.sample.OrderByDescending(s => s.sample_date).Take(1)

                  select new AreaViewModel { h_area = area, s_sample = sample };

                  return View(viewModel);

完全卡住,不勝感激!

您在錯誤的地方調用Take()方法,您必須編寫類似以下內容的內容:

var viewModel = (from area in db.area
                 join sample in db.sample on area.location_id equals sample.location_id
                 from s in db.sample
                 select new AreaViewModel 
                       { 
                         h_area = area, 
                         s_sample = sample 
                       }).OrderByDescending(s => s.s_sample.sample_date)
                         .FirstOrDefault();

如果要返回收集,則可以在FirstOrDefault()使用Take(1)而不是FirstOrDefault() ,因為它不會返回收集。

我認為您要實現的目標是:

var area= (from area in db.area
           join sample in db.sample on area.location_id equals sample.location_id
           orderby sample.sample_date descending
           select new AreaViewModel { h_area = area, s_sample = sample }).FirstOrDefault();

調用FirstOrDefault方法將獲得最新記錄,這是因為它將TOP(1)添加到Linq查詢生成的SQL查詢中。

暫無
暫無

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

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