如何在linq where子句中添加组合列?

时间:2016-06-25 17:53:58

标签: c# entity-framework linq

我的查询是这样的:

var list = context.Items
  .Where(i => i.Title.StartsWith(searchValue) || 
             (i.Title + string.format("{0}prep", i.OrderNumber))
                .StartsWith(searchValue))
  .ToList();

但是我得到了异常 - 对象没有设置为对象的实例 我还尝试在.AsEnumerable之后添加.Where但是不起作用

没有AsEnumerable我得到了:

  

LINQ to Entities无法识别方法' System.String   格式(System.String,System.Object)'方法,这种方法不能   被翻译成商店表达。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

  

我在这里做错了什么?

答案在异常消息中:

  

LINQ to Entities无法识别方法System.String Format(System.String, System.Object)方法,并且此方法无法转换为商店表达式。

换句话说,不支持string.Format方法,因为它无法转换为SQL查询。

幸运的是,支持字符串连接,因此您可以使用此字符串:

var list = context.Items.Where(i => i.Title.StartsWith(searchValue)
    || (i.Title + i.OrderNumber + "prep").StartsWith(searchValue))
    .ToList();