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

本文关键字:包含 ToString 失败 子句 Where to Entities Linq | 更新日期: 2023-09-27 18:09:38

我可以这样做:

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

但是它会提取所有的产品,而不是只提取我想要的,然后进行局部过滤。如果没有ToList(),它将无法在投影中找到/使用. tostring方法。视图模型。ID是来自客户端的字符串。

这里的问题讨论的是相同的问题,只是去掉了where子句,但答案并没有解决在本地提取每个产品的问题。

我的视图模型。ID是字符串,因为knockout.js会在用户更改值时将其从数字转换为字符串。我想我会先追究这一点,因为这可能更容易排除它。

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

我认为你从错误的方向处理这个问题。将ViewModel.ID转换回整数(int.Parse),然后可以将过滤卸载回数据库。这将比在数据库中将p.ID转换为字符串的解决方案要好得多,这一举动可能会在DB上击败对值的任何索引。