[英]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.