2012-07-05 82 views
3

,當我嘗試比較INT爲int我得到這個錯誤(比較它的工作原理字符串時)LINQ到實體無法識別方法INT32 toint32

IEnumerable<Commune> myCommunes = from d in db.Communes 
            where d.CodePostal == Convert.ToInt32(CodePostal.Text) 
            select d; 

foreach (Commune c in myCommunes) 
{ 
    CommunesList.Add(c); 
} 

enter image description here

任何想法?

+1

在您的lINQ調用之前將CodePostal.Text轉換爲整數。 – 2012-07-05 15:32:54

回答

8

看起來CodePostal.Text是你現有的環境中的東西 - 因此,所有你所要做的是提取從查詢:

int code = Convert.ToInt32(CodePostal.Text); // Or use int.Parse... 

// Not using a query expression here as it just adds extra cruft 
IEnumerable<Commune> myCommunes = db.Communes.Where(d => d.CodePostal == code); 

目前尚不清楚其中CommunesList來自 - 但如果它之前是空的這一點,你可以只使用:

CommunesList = db.Communes.Where(d => d.CodePostal == code).ToList(); 
+3

我很愛你 – 2012-07-05 15:36:17

+0

剛剛遇到同樣的問題,這個解決方案幫助。這是因爲linq在執行查詢之前通過不轉換解析表達式的方式? – 2013-03-14 04:21:46

+0

@AndreDublin:是的 - 最初查詢包含解析部分,而我將它分隔開以便它包含值。 – 2013-03-14 06:45:30

0

使用此: db.Communes.Where(d => d.CodePostal ==(INT)CodePostal.Text)

相關問題