2016-12-01 52 views
0

我有一個Linq-to-Entity查詢,該查詢在某個日期之前抓取所有項目,我想知道是否有人的身體知道如何也抓住第一個在相同的查詢中記錄比該日期更大的記錄。Linq選擇他們在某個日期之前或第一個之後的項目

context.Items.Where(x => x.CheckDate < DateTime.Now) 

有沒有辦法修改這個,以便我可以在不做兩個查詢後獲取第一個日期?

回答

2
var items = from u in context.Items 
           let dt = (from i in context.Items 
            where i.CheckDate> DateTime.Now orderby i.CheckDate).FirstOrDefault() 
           where u.CheckDate <=dt 
          select u; 
+0

在這種情況下,第一個還是默認實現? –

2

你需要兩個查詢,但合併的結果,你可以使用concat

var result =context.Items.Where(x => x.CheckDate < DateTime.Now).Concat(context.Items.OrderByDescending(t=>t.CheckDate >Yourdatetime).FirstOrDefault()); 
0

你不需要做所有這一切......

context.Items.Where(x => x.CheckDate < DateTime.Now).OrderByDescending(x => x.CheckDate).FirstOrDefault(); 
相關問題