Ho un modulo con più criteri di ricerca che un utente può utilizzare per cercare i dati dei dipendenti, ad es. FirstName, LastName, HireDate, Department, ecc.Dichiarazione LINQ inaffidabile con più criteri di ricerca
Sto usando LINQ e mi sto chiedendo quale metodo potrei usare per interrogare una collezione di Employes dato uno qualsiasi dei criteri di ricerca, cioè un utente non deve inserire tutto, ma devono inserire almeno uno dei parametri di ricerca.
Finora, durante il test della mia istruzione LINQ con due parametri di ricerca in atto, sembra che devo vedere se il parametro di ricerca è inserito o meno. Se questo è il caso, allora questo può diventare abbastanza ingombrante per molti parametri di ricerca.
// 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, inizialmente ho pensato che avrei potuto basta aggiungere Dove() dichiarazioni alla mia dichiarazione LINQ con i parametri di ricerca pertinenti, ma ho notato che non tutti i record sono stati restituiti che dovrebbe e quindi la logica sopra di se: quindi affermazioni.
È possibile aggiungere più istruzioni LINQ se si sta lavorando con un IQuery. È questo LINQ to Objects o stai usando un ORM per interrogare un database? – cost
@cost - All'inizio, non ho capito il tuo suggerimento, ma dopo aver visto le risposte fornite, credo che tu abbia ragione. Grazie! –