gpt4 book ai didi

c# - LINQ to Entities 在尝试解析列以进行不等式比较时无法识别方法 'Int32 Parse(System.String)' 方法

转载 作者:IT王子 更新时间:2023-10-29 04:31:11 26 4
gpt4 key购买 nike

我的页面中有以下代码:

var myVar= Entity.SetName
.Where(p => int.Parse(p.ID) >= start &&
int.Parse(p.ID) <= end);

start 和 end 是 int,但是 p.ID 是 string。所以我应该将 p.ID 转换为 int。但是我收到以下错误:

LINQ to Entities does not recognize the method 'Int32 Parse(System.String)' method, and this method cannot be translated into a store expression.

问题出在哪里??

最佳答案

首先,我强烈建议检查您的数据库设计,是否有充分理由将 ID 设为 string。我会考虑将 ID 数据库类型更改为 int,您将通过转换摆脱这个问题

您得到的错误意味着 EF 不知道如何将方法 Int32.Parse() 转换为 SQL。基本上你有两种选择如何处理:

在 linq to entities 之外进行比较:

var myVar= Entity.SetName.AsEnumerable()
.Where(p => int.Parse(p.ID) >= start &&
int.Parse(p.ID) <= end);

但这不推荐,因为在应用where 条件之前,您正在从数据库中读取整个结果集。

或者按照这篇关于 SO 的帖子中的描述制作自定义模型定义的函数:

Convert String to Int in EF 4.0或者 Entity Framework: Where do I extend the CSDL/MSL?

关于c# - LINQ to Entities 在尝试解析列以进行不等式比较时无法识别方法 'Int32 Parse(System.String)' 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14558837/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com