LINQ to Entities无法识别方法'System.String ToString()'方法,并且此方法无法转换为存储表达式

时间:2011-06-30 15:47:33

标签: linq entity-framework

我正在努力为此问题找到解决方法。 LINQ to Entities不允许使用ToString()方法

我正在尝试使用以下查询

return (from buy in context.ContractBuys
        where (buy.DealerNo.Value.ToString().StartsWith(dlrNo)) &&
        (buy.CreationDate >= createDateFrom) && (buy.CreationDate <= createDateTo)
        select buy).ToList();

dlrNo是一种字符串类型。但是buy.DealerNo是C#中的Nullable int。 我可以使用Like运算符吗?

2 个答案:

答案 0 :(得分:0)

由于经销商编号显然由几个部分组成(因为你只是想看看数字的开头),它应该是一个字符串而不是一个int,因为毕竟它不是真的单个数字(或者您可以将其拆分为单独的列)。但是,如果所有数字的长度相同,则可以通过10的幂来执行整数除法。例如,如果所有数字都是七位数,并且您想要查看前三个数字,除以10000. dlrNo应该在查询之前被解析为int。

int dlrNoAsInt = int.Parse(dlrNo);
return (from buy in context.ContractBuys
       where (buy.DealerNo.Value / 10000 == dlrNoAsInt) && ...;

答案 1 :(得分:0)

可能的解决方法:

var l = (from buy in context.ContractBuys
        where
        (buy.CreationDate >= createDateFrom) && (buy.CreationDate <= createDateTo)
        select buy).ToList();

return l.where(buy => buy.DealerNo.Value.ToString().StartsWith(dlrNo)).toList();