簡體   English   中英

LINQ查詢以查找日期為字符串格式的兩個給定日期之間的記錄

[英]LINQ query to find out records between two given dates when dates are in String format

我嘗試使用的是:

.Where(f => f.Date.CompareTo(Date1) >= 0 && f.Date.CompareTo(Date2) <= 0)

它提供了同一年的正確結果-如果日期1-1/20/2017和日期2 -1/30/2017

但是如果日期1-1/20/2015和日期2-1/30/2017

它返回1/20到1/30之間所有年份的結果

無法更改為DateTime並且當Date格式始終相同時,我正在嘗試使用String來實現。

如果絕對沒有辦法按照注釋中的建議更改數據庫設計,則可以嘗試獲取所有數據並在本地轉換為date ,或者嘗試在數據庫中創建一個將值轉換為date類型的視圖。

對於第一個選項,您可以執行以下操作:

.Select(f=> new {Record=f, Date=DateTime.Parse(f.Date)})
.Where(f => f.Date >= Date1  && f.Date <= Date2)

我認為您可以直接使用SqlFunctions在sql SqlFunctions其轉換(盡管我從未嘗試過)

.Select(f=> new {Record=f, Date= SqlFunctions.DateAdd("day", 0, f.Date)})
.Where(f => f.Date >= Date1  && f.Date <= Date2)

或直接在哪里:

.Where(f => SqlFunctions.DateAdd("day", 0, f.Date) >= Date1  && SqlFunctions.DateAdd("day", 0, f.Date) <= Date2)

第二個選項是使用convert (datetime, *yourDateField*, 101)在數據庫中創建view - 不確定您所用的101

只是澄清一下:這些都不是優化的。 最好的辦法就是更改數據庫設計

暫無
暫無

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

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