我试图查找SALARIO
大于10,000的所有条目。我的SQL Server表中的SALARIO
列的类型为varchar
,而我尝试编写的查询就是这样的
from e in db.ASALARIADOS
where int.Parse(e.SALARIO) > 10000
select e;
但是我得到了一个不受支持的例外。我应该如何处理这种情况?
答案 0 :(得分:1)
from e in db.ASALARIADOS
where Convert.ToInt32(e.SALARIO) > 10000
select e;
答案 1 :(得分:0)
你不能这样做,因为最后,它被转换为SQL查询,并且它无法将你的int.Parse转换为SQL。
然而,你能尝试的是这个。
创建一个小函数,该函数将返回true或false,具体取决于传入的值是否大于10000。
public bool salarioCheck(string salario)
{
if (Convert.ToInt32(salario) > 10000)
{ return true; }
return false;
}
public void yourMethod()
{
from e in db.ASALARIADOS
where salarioCheck(e)
select e;
}
所以你基本上是在salarioCheck()中进行转换。
答案 2 :(得分:0)
试试这个,我还没有测试过,但是我记得使用"让" Linq中的子句和Int32.Parse在过去完成了类似的事情。
from e in db.ASALARIADOS
let x = Int32.Parse(e.SALAIO.Trim())
where x > 10000
select e;
答案 3 :(得分:0)
尝试将其作为一种解决方法:尚未尝试过这个但是这应该可行
db.ASALARIADOS.toList().Where(m => Convert.ToInt32(m.SALARIO) > 10000)