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