一千萬個為什麽

搜索

LINQ - 如何查詢僅具有開始日期的有效日期範圍

我正在使用C#3.5和EntityFramework。我有一個包含利率的數據庫中的項目列表。不幸的是,此列表僅包含有效開始日期。我需要查詢此列表中的範圍內的所有項目。

但是,如果不兩次查詢數據庫,我看不到這樣做的方法。 (雖然我想知道使用EntityFramework延遲執行是否僅進行一次調用。)無論如何,我想知道如果不使用我的上下文兩次就能做到這一點。

internal IQueryable GetInterests(DateTime startDate, DateTime endDate)  {
    var FirstDate = Context.All().Where(x => x.START_DATE < startDate).Max(x => x.START_DATE);
    IQueryable listOfItems = Context.All().Where(x => x.START_DATE >= FirstDate && x.START_DATE <= endDate);
    return listOfItems;
}

最佳答案

如果您可以使用LINQ查詢,則可以使用let來執行此操作:

(from c in dbContext.Table
let firstdate = dbContext.Table.Max(i => c.StartDate < startDate)
where c.StartDate >= firstdate
and c.StartDate <= enddate
select c)

我不確定max是否會以這種方式工作,所以您可能需要選擇:

(from c in dbContext.Table
let firstdate = dbContext.Table.Select(i => i.StartDate).Max(i => c.StartDate < i)
where c.StartDate >= firstdate
and c.StartDate <= enddate
select c)

這樣的事情。

轉載註明原文: LINQ - 如何查詢僅具有開始日期的有效日期範圍