場景:
查詢條件需要使用到時間類型,且需要特殊格式化,例:ToString("yyyy-MM-dd");即,在需要使用時間進行like方式處理時;
此時,用如下方式:
var q = from c in context.HasDateModels where c.UserDate.ToString("yyyy-MM-dd").Contains("20") select c;
進行查詢使用;
提示:LINQ to Entities 不識別方法"System.String ToString(System.String)",因此該方法無法轉換為存儲表達式
即:Linq to Entities不支持帶參數的時間字符串轉換
解決方法:
以下方法只適用於數據量較小的情況,同時建議,使用此法,若有其他條件,建議先進行一次Linq to Entities篩選後再處理以下情況;
var q = from c in context.HasDateModels.AsEnumerable() where c.UserDate.ToString("yyyy-MM-dd").Contains("20") select c;
原理:利用AsEnumerable將使用方式轉化為Linq to Object,即將數據查詢至內存後再進行篩選