Mam formularz z wieloma kryteriami wyszukiwania, których może użyć użytkownik do wyszukania danych pracownika, np. FirstName, LastName, HireDate, Department, itp.Nieporęczna instrukcja LINQ z wieloma kryteriami wyszukiwania
Używam LINQ i zastanawiam się, jaką metodę mogę użyć do wysłania zapytania do zbioru Employesów z jednym z kryteriów wyszukiwania, tzn. Użytkownik nie musi wprowadzać wszystkich, ale muszą wprowadzić co najmniej jeden z parametrów wyszukiwania.
Do tej pory, podczas testowania mojej instrukcji LINQ z dwoma parametrami wyszukiwania, wydaje się, że muszę sprawdzić, czy parametr wyszukiwania jest wprowadzony czy nie. W takim przypadku może to być dość nieporęczne w przypadku wielu parametrów wyszukiwania.
// only FirstName is entered
if (!string.IsNullOrEmpty(FirstName) && string.IsNullOrEmpty(LastName))
{
var employees = DB.Employees
.Where(emp => emp.FirstName.Contains(fName));
}
// only LastName is entered
else if (string.IsNullOrEmpty(FirstName) && !string.IsNullOrEmpty(LastName))
{
var employees = DB.Employees
.Where(emp => emp.LastName.Contains(lName));
}
// both parameters are entered
else if (!string.IsNullOrEmpty(FirstName) && !string.IsNullOrEmpty(LastName))
{
var employees = DB.Employees
.Where(emp => emp.FirstName.Contains(fName))
.Where(emp => emp.LastName.Contains(lName));
}
FYI, początkowo myślałem, że może po prostu dołączyć Gdzie() sprawozdanie do mojego oświadczenia LINQ z istotnych parametrów wyszukiwania, ale zauważyłem, że nie były zwrócone wszystkie rekordy, które powinny, a więc powyżej logika IF- następnie wyciągi.
Możesz dodać wiele instrukcji LINQ, jeśli pracujesz z IQueryable. Czy to LINQ to Objects, czy używasz ORM do wysyłania zapytań do bazy danych? – cost
@cost - Na początku nie zrozumiałem Twojej sugestii, ale po zobaczeniu dostarczonych odpowiedzi, wierzę, że masz rację. Dzięki! –