实体框架,如何使用IQueryable与多个where转换为SQL?

时间:2017-07-14 02:13:35

标签: entity-framework linq linq-to-sql entity-framework-4

此处的所有内容均为IQueryable

  1. 这两个示例是否生成相同的SQL查询?
  2. 添加多个Where被转换为SQL作为AND?
  3. 有没有办法添加多个Where连接为OR?
  4. 示例1:

    client = client.Where(c => c.FirstName.StartsWith("F")); 
    client = client.Where(c => c.LastName.StartsWith("T")); 
    return client.ToList();
    

    示例2:

    client = client.Where(c => c.FirstName.StartsWith("F") AND c.LastName.StartsWith("T")); 
    return client.ToList();
    

3 个答案:

答案 0 :(得分:1)

多个where子句有效。它相当于:

client = client.Where(c=> c.FirstName.StartsWith("F") && c.LastName.StartsWith("T"));

在你的情况下,它会在.ToList()调用中被发送到SQL。 其他将被执行的情况包括: .Any(),。first()/。Last()/。FirstOrDefault()/ etc。,。Count()。

答案 1 :(得分:1)

尝试代码

client = client.Where(c => (c.FirstName.StartsWith("F") && c.LastName.StartWith("T"))).ToList();

或使用条件

 client = client.Where(c => (c.FirstName.StartsWith("F") || c.LastName.StartWith("T"))).ToList();

答案 2 :(得分:0)

在LINQ中添加多个条件有多种方法。请点击here!更多地了解这一点。谢谢。