2011-09-13 208 views
4

我必須將srting值轉換爲Int,但似乎Linq對實體不支持這一點。將字符串轉換爲INT到LINQ to Entities?

對於下面的代碼,我有geting er錯誤。 anyonw知道如何將字符串轉換爲int。

var query = (from p in dc.CustomerBranch 
        where p.ID == Convert.ToInt32(id)// here is the error. 
        select new Location() 
        {Name=p.BranchName,Address=p.Address, Postcode=p.Postcode,City=p.City,Telephone=p.Telephone}).First(); 
     return query; 

誤差爲:LINQ實體無法識別方法「的Int32 ToInt32(System.String)」, 和這種方法不能被翻譯成表達商店。

回答

4

做轉換外LINQ:

var idInt = Convert.ToInt32(id); 
var query = (from p in dc.CustomerBranch 
        where p.ID == idInt 
        select new Location() 
        {Name=p.BranchName,Address=p.Address, Postcode=p.Postcode,City=p.City,Telephone=p.Telephone}).First(); 
     return query; 
+0

是的,這肯定會工作:)。但我不知道在查詢中必須有這樣做的方法.. – kandroid

+1

它依賴於LINQ提供程序什麼將在linq中工作,哪些不會(即,linq提供程序是否能夠將表達式轉換爲臥底語言或不)EF提供者它不支持這個轉換表達式。 – Ankur

+0

@kandroid我認爲它不是很好在查詢中,儘管你可能做'p.ID.ToString()== id' – Manatherin

-1

不,他們不會。這樣想一想; ToString()和parse()都是對象的方法。由於linq-to-entities試圖將你的linq表達式轉換爲sql,所以這些都不可用。 如果需要在查詢中執行此操作,則可能需要在linq-to-entities [1]中可用的Cast。在ToString的情況下,你可以使用SqlFunctions.StringConvert()[2]。

  1. http://msdn.microsoft.com/en-us/library/bb301460.aspx
  2. http://msdn.microsoft.com/en-us/library/system.data.objects.sqlclient.sqlfunctions.aspx
+3

-1。 Cast將提供的集合的元素轉換爲指定的類型。如果您向Cast提供字符串,它將嘗試將該字符串轉換爲請求類型的IEnumerable。 –

相關問題