如何创建一个linq搜索,忽略null(或可null)的值?
我有一个方法
IEnumerable<X> Search(int? a, int? b, int? c)
我希望它能返回任何不为空的整数的匹配结果。
例如:如果a
和c
有值1和9,而b
为null,则搜索应该(大致)呈现为:
SELECT *
FROM [TABLE]
WHERE a = 1
AND c = 9
我的真正方法将有5个以上的参数,所以迭代组合是不可取的。
如何创建一个linq搜索,忽略null(或可null)的值?
我有一个方法
IEnumerable<X> Search(int? a, int? b, int? c)
我希望它能返回任何不为空的整数的匹配结果。
例如:如果a
和c
有值1和9,而b
为null,则搜索应该(大致)呈现为:
SELECT *
FROM [TABLE]
WHERE a = 1
AND c = 9
我的真正方法将有5个以上的参数,所以迭代组合是不可取的。
IEnumerable<X> query = items;
if (a.HasValue) {
query = query.Where(x => x.a == a.Value)
}
if (b.HasValue) {
query = query.Where(x => x.b == b.Value)
}
if (c.HasValue) {
query = query.Where(x => x.c == c.Value)
}
var result = from row in table
where (!a.HasValue || row.a == a.Value)
&& (!b.HasValue || row.b == b.Value)
&& (!c.HasValue || row.c == c.Value)
select row;
{"可空对象必须具有值。"}
- C. Rossa
,a
,a
)。 - C. Ross