Linq搜索忽略空值

C. *_*oss 5 c# linq-to-sql

如何进行忽略null(或nullables)的linq搜索?

我有一个方法

IEnumerable<X> Search(int? a, int? b, int? c)
Run Code Online (Sandbox Code Playgroud)

我想让它返回任何一个整数的匹配?不是空的.

IE:如果a并且c值为1和9并且b为null,则搜索应该(大致)呈现

SELECT * 
FROM [TABLE]
WHERE a = 1
AND c = 9
Run Code Online (Sandbox Code Playgroud)

我的真实方法将有5个以上的参数,因此迭代组合就是正确的.

Mar*_*ers 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)
}
Run Code Online (Sandbox Code Playgroud)