摘要:[Linq] 在where 條件中進行文字轉數字形態比較
寫Linq時,遇到篩選資料要將文字形態轉成數字形態比較時,如果直接使用int.Parse會出現錯誤:
LINQ to Entities 無法辨識方法 'Int32 Parse(System.String)' 方法,而且這個方法無法轉譯成存放區運算式。
var query = from Parts in db.PartsInfo
where int.Parse(Parts.InputDate) > int.Parse(DateTime.Now.ToString("yyyyMMdd"))
select new PartsModel
{
PartsID = Parts.ID,
PartsName = Parts.Name,
InputDate = Parts.InputDate,
};
只要將
var query = from Parts in db.PartsInfo
改寫成
var query = from Parts in db.PartsInfo.AsEnumerable()
就可以了
原因可參考
http://social.msdn.microsoft.com/Forums/en-US/6c8892db-8df7-4174-b9b0-764dc1df82ad/intparse-is-not-supported-by-linq-to-entities?forum=adodotnetentityframework
http://msdn.microsoft.com/en-us/library/bb335435.aspx