【问题标题】:LINQ to entities exceptionLINQ to 实体异常
【发布时间】:2011-03-22 05:49:04
【问题描述】:

我正在尝试使用 Linq 查询从 DbSet 中提取对象。

我使用语法:

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

我得到以下异常:

LINQ to Entities 无法识别方法“Nation get_Item(Int32)”方法,而这 方法无法转换为商店表达式。

Nation 类有几个 string 字段,一个 int 字段(ID)和几个其他对象作为字段。

可能是什么问题?

【问题讨论】:

  • 为什么你有字符串“1”,当ID是int?

标签: linq entity-framework


【解决方案1】:

您需要先提取整数,因为在 Linq to Entities 范围内没有适当的翻译来从您的对象 Nation 中检索整数:

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

【讨论】:

    【解决方案2】:

    如果IDint 类型,那么该行不应该是:

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

    删除引号以进行 intint 比较。

    【讨论】:

      【解决方案3】:

      因此,如果您说“一个 int 字段(ID)”和.Where(c => c.ID == "1"),我认为您需要更改为

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

      【讨论】:

      • 对不起,我忘记更正帖子了。代码实际上是 'Where(c => c.ID = otherNation.ID)' 我得到了同样的错误
      • Francesco,单个 = 表示您正在尝试分配一个值。您应该使用 c=> c.ID == otherNation.ID。单个 = 是赋值,== 表示比较。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-19
      • 1970-01-01
      • 2011-04-27
      • 2013-07-29
      • 2023-03-11
      相关资源
      最近更新 更多