使用具有多个where条件的Linq

问题描述 投票:0回答:3

我有一个类代表已定义的数据库中的表:

public class MyClass{
    public int MyClassId{get;set;}
    public string Name{get;set;} 
    public string LastNamw{get;set;}
    public DateTime From{get;set;}
    public DateTime To{get;set;}
}

我想在其上对 Oracle 数据库运行一些搜索查询。

现在的问题是:

var list = context.MyClass
    .Where(x => x.From>= FromMyDate)
    .Where(x => x.To <= ToMyDate);


var list = context.MyClass
    .Where(x => x.From>= FromMyDate && x.To <= ToMyDate);

使用带有where条件的多行还是单行更好?为什么...请

据我了解,当我想搜索第一个条件的结果时,我会使用多个where子句。

linq linq-to-entities oracle10g
3个回答
11
投票

应该没关系

您只需创建一个传递给 Oracle 提供程序的表达式树,创建结果 SQL 查询是提供程序的工作。尽管两者之间的表达式树略有不同,但它仍然应该产生相同的 sql。我喜欢使用 sql profiler 来确保我的 linq 查询生成高效的 sql。


7
投票

我将关注 Vossad01 发布的 John Skeet 回答。

正确的 Linq where 子句


0
投票

根据我的经验,如果使用具有导航属性的多个“where”子句,EF 会为 EF 6 生成多个联接。您可以使用 EF Profiler 获取查询。我总是用这个神奇的工具检查查询。如果您使用 EF 6,我建议您不要相信结果:)

© www.soinside.com 2019 - 2024. All rights reserved.