今天在使用LinQ的In查询时,遇到一个问题,代码如下:
IList<string> list = new List<string>();
list.add("a");
list.add("b");
var result = from c in db.orders
where list.Contains(c.str)
select c;
这个时候在执行的时候,就会抛出异常,说Contains方法不能转换为SQL。
后来找了半天的原因,原来是泛型集合的问题,原来泛型集合在此处使用Contains方法不支持转换为SQL,我们只需要稍稍修改一下,就能正确执行了,修改如下:
var result = from c in db.orders
where list.ToArray().Contains(c.str)
select c;