在ASP.NET中将varchar与int进行比较

时间:2014-10-08 16:12:35

标签: asp.net sql-server asp.net-mvc

我试图查找SALARIO大于10,000的所有条目。我的SQL Server表中的SALARIO列的类型为varchar,而我尝试编写的查询就是这样的

from e in db.ASALARIADOS 
where int.Parse(e.SALARIO) > 10000 
select e;

但是我得到了一个不受支持的例外。我应该如何处理这种情况?

4 个答案:

答案 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)