LINQ to Entities无法识别方法int32 toint32。

3

当我尝试将 int 与 int 进行比较时(当比较字符串时它可以工作),我会得到这个错误。

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);
}

有什么想法吗?(涉及IT技术的问题)

1
在进行 LINQ 调用之前,将 CodePostal.Text 转换为整数。 - Security Hound
2个回答

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();

刚遇到了同样的问题,这个解决方案很有帮助。这是因为linq在执行查询之前没有进行转换,导致表达式解析的方式是这样的吗? - Andre Dublin
@AndreDublin:是的-最初查询包含解析部分,而我已将其分离出来,使其仅包含值。 - Jon Skeet

-1
使用以下代码: db.Communes.Where(d => d.CodePostal == (int)CodePostal.Text)

它无法编译。我得到了无法将类型'string'转换为'int'的错误。 - Vinit Divekar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接