То, как я могу сделать поиск linq, который игнорирует, аннулирует (или nullables)?
У меня есть метод
IEnumerable<X> Search(int? a, int? b, int? c)
И я хочу это к ответным матчам на каком-либо из ints? это не является пустым.
IE: если a
и c
имейте значения 1 и 9 и b
является пустым, поиск должен представить (примерно) к
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;