Поиск Linq, который игнорирует нули - PullRequest
5 голосов
/ 04 марта 2010

Как я могу выполнить поиск linq, который игнорирует нули (или обнуляемые)?

У меня есть метод

IEnumerable<X> Search(int? a, int? b, int? c)

И я хочу, чтобы он возвращал совпадения по любому из целых? которые не равны нулю.

IE: если a и c имеют значения 1 и 9 и b равно нулю, поиск должен отображаться (приблизительно) до

SELECT * 
FROM [TABLE]
WHERE a = 1
AND c = 9

Мой реальный метод будет иметь более 5 параметров, поэтому итерация комбинаций не вызывает затруднений.

Ответы [ 2 ]

5 голосов
/ 04 марта 2010
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)
}
4 голосов
/ 04 марта 2010
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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...