首先,我对数据库没有任何控制权,因此我无法改变任何内容。
数据库中的字段是varchar(50)并包含(对于我感兴趣的记录)一个数字。我想让所有这些数字超过50,在SQL中我只需输入:
SELECT Field FROM MyTable WHERE Field > '50'
即使我同意数据类型应该是别的东西,但工作正常。
在EF我正在尝试:
query = query.Where(t => t.MyTable.Field > string);
错误是:运营商'>'不能应用于'string'和'string'
类型的操作数答案 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.