C# SqlKata-如果where子句的一部分为null,会发生什么情况?
我有一个SQLKata查询。它与香草SQLKata不同,因为有些同事已经准备好了包装C# SqlKata-如果where子句的一部分为null,会发生什么情况?,c#,linq,sqlkata,C#,Linq,Sqlkata,我有一个SQLKata查询。它与香草SQLKata不同,因为有些同事已经准备好了包装 var conditionQuery = new CustomQuery<MyClass>() .Select ( s => s.Id, s => s.StartTime, s => s.CreatedTime )
var conditionQuery = new CustomQuery<MyClass>()
.Select
(
s => s.Id,
s => s.StartTime,
s => s.CreatedTime
)
.Where(w => w.Id == jobs.PersonLinks.FirstOrDefault().PersonId)
.Where(w => w.StartTime == jobs.PersonLinks.FirstOrDefault().Time)
.OrderBy(w => w.CreatedTime);
var conditionQuery=new CustomQuery()
.选择
(
s=>s.Id,
s=>s.StartTime,
s=>s.CreatedTime
)
.Where(w=>w.Id==jobs.PersonLinks.FirstOrDefault().PersonId)
.Where(w=>w.StartTime==jobs.PersonLinks.FirstOrDefault().Time)
.OrderBy(w=>w.CreatedTime);
我的问题是,如果
jobs.PersonLinks
为null,那么conditionQuery
是否解析为null?由于关于这个问题的信息很少,我写了一个一般性的答案。
你可以用这个
.Where(w => w.Id == jobs.PersonLinks?.FirstOrDefault()?.PersonId ?? -1)
.Where(w => w.StartTime == jobs.PersonLinks?.FirstOrDefault()?.Time ?? new DateTime())
由于关于这个问题的信息很少,我写了一个大概的答案。 你可以用这个
.Where(w => w.Id == jobs.PersonLinks?.FirstOrDefault()?.PersonId ?? -1)
.Where(w => w.StartTime == jobs.PersonLinks?.FirstOrDefault()?.Time ?? new DateTime())
当PersonLink为
null
时,应抛出。“你是想问它什么时候是空的吗?”亨克沃特曼说,即使是空的,它也会扔。他也在访问该行上的一个属性。我应该补充一点,PersonLinks被初始化为一个空列表。因此,在我尝试为conditionQuery
分配内容之前,我应该先确定是否PersonLink。Any
,对吗?我想我可以将其包装在一个if(jobs.PersonLinks.Any())
中,由Linq提供者决定,因此唯一可以回答这个问题的是那些同事(假设是Linq)。如果提供程序正确执行其工作,则不应执行此操作,并且Where
不是函数
,而是可以解析和转换的表达式。当PersonLink为null
时,应抛出。“你是想问它什么时候是空的吗?”亨克沃特曼说,即使是空的,它也会扔。他也在访问该行上的一个属性。我应该补充一点,PersonLinks被初始化为一个空列表。因此,在我尝试为conditionQuery
分配内容之前,我应该先确定是否PersonLink。Any
,对吗?我想我可以将其包装在一个if(jobs.PersonLinks.Any())
中,由Linq提供者决定,因此唯一可以回答这个问题的是那些同事(假设是Linq)。如果提供程序正确执行其工作,则不应执行此操作,并且其中
不是函数
,而是可以解析和转换的表达式。