2011-06-30 27 views
0

我苦苦尋找這個問題的解決方法。 LINQ到實體不允許使用ToString()方法LINQ到實體無法識別方法「System.String的ToString()」方法,而這種方法不能被翻譯成店表達

我嘗試使用下面的查詢

return (from buy in context.ContractBuys 
     where (buy.DealerNo.Value.ToString().StartsWith(dlrNo)) && 
     (buy.CreationDate >= createDateFrom) && (buy.CreationDate <= createDateTo) 
     select buy).ToList(); 

dlrNo是一個字符串類型。但buy.DealerNo是C#中的一個可爲空的int。 我可以使用Like運算符嗎?

+0

可能重複的[LINQ實體無法識別方法「System.String的ToString()」方法,和這種方法不能被翻譯成存儲表達式]( http://stackoverflow.com/questions/5899683/linq-to-entities-does-not-recognize-the-method-system-string-tostring-method) – Magnus

回答

0

由於經銷商數量顯然是由幾部分組成(因爲你想只是看看數字打頭),這也許應該是一個字符串,而不是一個int,因爲,畢竟,它是不是真的一個單一的數字(或者你可以將它分成不同的列)。但是,如果所有數字的長度都相同,則可以用十的冪數來執行整數除法。例如,如果所有的數字都是七位數長,你想看看前三,由10000 dlrNo鴻溝或許應該被解析爲查詢前一個int。

int dlrNoAsInt = int.Parse(dlrNo); 
return (from buy in context.ContractBuys 
     where (buy.DealerNo.Value/10000 == dlrNoAsInt) && ...; 
0

可能的解決方法:的

var l = (from buy in context.ContractBuys 
     where 
     (buy.CreationDate >= createDateFrom) && (buy.CreationDate <= createDateTo) 
     select buy).ToList(); 

return l.where(buy => buy.DealerNo.Value.ToString().StartsWith(dlrNo)).toList(); 
+0

這是行不通的。給我同樣的錯誤 –

相關問題