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

Zac*_*ott 1 c# linq-to-entities entity-framework-4.1

我可以做以下事情:

 var result = DB.Products.ToList()  // .AsEnumerable() too
              .Where( p => p.ID.ToString() == ViewModel.ID);
Run Code Online (Sandbox Code Playgroud)

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

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

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

Ant*_*ram 7

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