我有一个三元运算符,如下所示LINQ查询,如图所示
var sub = (SubordinationType == 1) ? (true&false) : false;
var query = from vw in dbContext.vw
where (vw.office == FieldOffice && vw.SubAgreement == sub)
select vw;
这里SubAgreement是数据库中的一个位字段我需要根据ternery选择true和false(0,1)或false(0)我是如何实现的?
请快速提出建议。
答案 0 :(得分:6)
我想我得到了你的问题。你的逻辑是:
Subordination
为1,SubAgreement
并不重要(真或假)Subordination
不是1,则SubAgreement
应为false 因此增加了另一个条件:
//..
where (vw.office == FieldOffice && (Subordination == 1 || !vw.SubAgreement))
答案 1 :(得分:4)
尝试类似:
var query = from vw in dbContext.vw
where vw.office == FieldOffice
select vw;
if (SubordinationType != 1)
{
query = query.Where(vw => vw.SubAgreement == false);
}
在LINQ中,使用其他子句添加where
中的新&&
子句非常容易(请注意,只要您希望它们位于&&
中,就很容易添加, ||
案件要复杂得多!:-))
答案 2 :(得分:3)
当SubordinationType
为1
或SubAgreement
为false
时,您可以创建一个条件:
var query = from vw in dbContext.vw
where (vw.office == FieldOffice && (SubordinationType == 1 || vw.SubAgreement == false))
select vw;