大于EF中字符串的比较

时间:2013-10-29 15:34:08

标签: c# sql entity-framework

首先,我对数据库没有任何控制权,因此我无法改变任何内容。

数据库中的字段是varchar(50)并包含(对于我感兴趣的记录)一个数字。我想让所有这些数字超过50,在SQL中我只需输入:

SELECT Field FROM MyTable WHERE Field > '50'

即使我同意数据类型应该是别的东西,但工作正常。

在EF我正在尝试:

query = query.Where(t => t.MyTable.Field > string);

错误是:运营商'>'不能应用于'string'和'string'

类型的操作数

2 个答案:

答案 0 :(得分:-3)

使用int.Parse(str)C#没有隐式输入 - 你必须使用'>'将它转换为整数,双倍等befoe运营商。如果您不确定该字符串是否为数字,则可以使用int.tryparse(str)

答案 1 :(得分:-3)

最初,我建议使用以下代码,我尝试使用但不使用EF实体集:

query = query.Where(t => int.TryParse(t.Mytable.Field, out number) && int.Parse(t.MyTable.Field) > int.Parse(string));

然后,在得到一些好的评论之后,我在EF集上尝试了它,并且该行本身有效,但是在该行执行之后,我尝试了以上查询的结果(例如Count()),我得到了以下例外:

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