在查询的where子句中,我试图将具有数字类型varchar的列与预定整数进行比较。我想要大于预定数量的那些。
根据我的研究,不可能这样做,因为标准函数在SQL中不可用。
谁能建议我可以做到这一点的方法?
***中的那一行是我尝试进行比较的地方。 SVNREVISION是存储数字字符的字符串。
.Where(
@t =>
@t.@t.@[email protected] == 197 && @t.e.FIELDID == 106011301 ***&& @t.@t.@[email protected] > 42544***
&& (@t.@t.@[email protected] ?? "") != ""
&& !(@t.@t.@[email protected] ?? "").Contains("DF"))
.Select(
@t =>
不幸的是,我无法更改SVNREVISION的数据类型。
最佳答案
您必须在内存中进行过滤,而不是将其转换为SQL语句。通过强制实体框架在添加Where
来调用ToList()
方法之前对表达式求值,可以做到这一点:
.ToList()
.Where(
@t =>
@t.@t.@[email protected] == 197 && @t.e.FIELDID == 106011301 && Convert.ToInt32(@t.@t.@[email protected]) > 42544
&& (@t.@t.@[email protected] ?? "") != ""
&& !(@t.@t.@[email protected] ?? "").Contains("DF"))
.Select(
@t =>
关于c# - Entity Framework 将字符串转换为Int,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33667486/