2013-02-19 3 views
1

У меня есть до 4 значений: string firstName, string lastName, string ssn, DateTime dateOfInjury. Пользователь может ввести любую из этих или любых комбинаций. Если они вводят более одного, я хочу вернуть результаты с помощью AND. Например, где firstName соответствует (если это все, что они вводят), или если firstName AND lastName соответствует, если они вводят оба из них, и так далее. Каков наилучший способ сделать это с помощью LINQ? Я надеюсь, что есть что-то более элегантное, что гигантский оператор переключения.Расширенный поиск с LINQ to EF

Я планировал динамически строить предложение where, но похоже, что это не сработает: Building dynamic where clauses in LINQ to EF queries.

ответ

2

Просто создайте свой запрос. Если у вас есть последовательность вызовов Where, это AND'd вместе.

IQueryable<Customer> query = source.Customers; 

if (firstName != null) 
{ 
    query = query.Where(c => c.FirstName == firstName); 
} 
if (lastName != null) 
{ 
    query = query.Where(c => c.LastName == lastName); 
} 
+0

Ah. Таким образом, результат только немного уменьшается с каждым запросом? Это мне никогда не приходило в голову. Я сделаю это. – birdus

+0

Это отлично работает! Благодаря! – birdus

Смежные вопросы