我使用以下QueryOver:
var query = searchTermRepository.GetAllOver()
.Where(Restrictions.On<Entities.SearchTerm>(c => c.Text).IsLike(filter.Value, MatchMode.Start))
.Select(Projections.Distinct(Projections.Property<Entities.SearchTerm>(x => x.Contact)))
.Inner.JoinQueryOver(x => x.Contact).Take(100);
Run Code Online (Sandbox Code Playgroud)
这会创建:
SELECT distinct TOP ( 100 /* @p0 */ ) this_.ContactId as y0_
FROM SearchTerm this_
inner join Contact contact1_
on this_.ContactId = contact1_.Id
left outer join Company contact1_1_
on contact1_.Id = contact1_1_.Id
left outer join Person contact1_2_
on contact1_.Id = contact1_2_.Id
left outer join Branch contact1_3_
on contact1_.Id = contact1_3_.Id
left outer join ContactGroup contact1_4_
on contact1_.Id = contact1_4_.Id
WHERE this_.Text like 'koc%%' /* …Run Code Online (Sandbox Code Playgroud) 我经常看到使用的代码!!condition而不仅仅是常规条件.即:
if(!!value){
doSomething();
}
Run Code Online (Sandbox Code Playgroud)
与:
if(value){
doSomething();
}
Run Code Online (Sandbox Code Playgroud)
如果存在功能上的差异是什么?一个优于另一个?如果有的话,选择使用一个与另一个的条件是什么?