使用带有多个where条件的Linq

lmvvr0a8  于 9个月前  发布在  其他
关注(0)|答案(3)|浏览(74)

我有一个表示数据库中一个表的类,它被定义为:

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子句。

mhd8tkvw

mhd8tkvw1#

不重要
你只是创建了一个传递给Oracle Provider的表达式树,而生成SQL查询是Provider的工作。即使两者之间的表达式树略有不同,它仍然会生成相同的SQL。我喜欢使用SQL分析器来确保我的linq查询生成高效的SQL。

lqfhib0f

lqfhib0f2#

我将按照约翰·斯基特的回答,由Vossad01发布。
正确的Linq where子句

owfi6suc

owfi6suc3#

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

相关问题