我有这个LINQ查询:
bool? a, b, c;
from i in _ctx.SomeEntitySet
where
(a == null ? true : i.IsA == a) &&
(b == null ? true : i.IsB == b) &&
(c == null ? true : i.IsC == c)
select i;
如果IsX == x
,我只想考虑条件x != null
。
答案 0 :(得分:4)
where (a == null || i.IsA == a) &&
(b == null || i.IsB == b) &&
(c == null || i.IsC == c)
答案 1 :(得分:3)
不确定它是否更有效,但它读得更好:
bool? a, b, c;
from i in _ctx.SomeEntitySet
where
(a == null || i.IsA == a) &&
(b == null || i.IsB == b) &&
(c == null || i.IsC == c)
select i;
答案 2 :(得分:1)
我认为你最清楚的版本表达了这个意图。我不会改变它。
备选方案:
a == null || i.IsA == a;
!a.HasValue || i.IsA == a;
i.IsA == (a ?? i.IsA);
然而,这些对我来说都不是更清楚。不要注重效率,注重可读性和表现力。