Linq to Entities:包含ToString的Where子句失败

时间:2011-09-27 01:05:52

标签: c# linq-to-entities entity-framework-4.1

我可以做以下事情:

 var result = DB.Products.ToList()  // .AsEnumerable() too
              .Where( p => p.ID.ToString() == ViewModel.ID);

但它会提取所有产品而不是我想要的产品,然后在本地过滤。没有ToList(),它无法在投影中查找/使用.ToString方法。 ViewModel.ID是客户端的字符串。

这个问题here讨论了同样的问题,减去了where子句,但答案并没有解决在本地拉出每个产品的问题。

我的ViewModel.ID是字符串,因为如果用户更改了值,knockout.js会将其从numeric转换为字符串。我想我会首先追求它,因为它可能更容易排除它。

1 个答案:

答案 0 :(得分:7)

我认为你正在从错误的方向接近问题。将ViewModel.ID转换回整数(int.Parse),然后您可以将过滤卸载回数据库。这比将p.ID强制转换为数据库中的字符串要好得多,这一举动可能会破坏对数据库值的任何索引。