2011-03-21 143 views
0

我试图用Linq查询从DbSet中提取一个对象。LINQ to entities exception

我使用的语法:

Nation nation = nationDB.Nations.Where(c => c.ID == testNation.ID).First(); 

我得到以下异常:

LINQ到实体无法识别方法 '国家get_Item(Int32)已' 的方法,而这种 方法不能被翻译成商店表达。

Nation有几个string字段,一个int字段(ID)和几个其它的目的,作为字段。

问题是什么?

+0

为什么你有字符串“1”,当ID是int吗? – 2011-03-21 20:40:06

回答

2

您需要先拔出整数,因为没有合适的翻译从你的对象Nation检索的LINQ内的整数实体范围:

int testId = testNation.ID; 
Nation nation = nationDB.Nations.Where(c => c.ID == testId).SingleOrDefault(); 
0

所以如果你说“一个INT字段(ID)”和.Where(c => c.ID == "1")我认为你需要改变

.Where(c => c.ID == 1) 
+0

对不起,我忘了更正这篇文章。该代码实际上是'Where(c => c.ID = otherNation.ID)',并且我得到相同的错误 – Francesco 2011-03-21 20:48:59

+0

Francesco,单个=表示您试图分配一个值。你应该使用c => c.ID == otherNation.ID。一个=是一个赋值,==意味着比较。 – 2011-03-21 21:01:42

2

如果IDint型,则不应行是:

Nation nation = nationDB.Nations.Where(c => c.ID == 1).SingleOrDefault(); 

去掉引号做个intint比较。