[Linq] 在where 條件中進行文字轉數字形態比較

摘要:[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