Mi chiedo se ci sono implicazioni di prestazioni di più dichiarazioni .Where(). Per esempio potrei scrivere:Esistono più istruzioni .Where() in LINQ un problema di prestazioni?
var contracts = Context.Contract
.Where(
c1 =>
c1.EmployeeId == employeeId
)
.Where(
c1 =>
!Context.Contract.Any(
c2 =>
c2.EmployeeId == employeeId
&& c1.StoreId == c2.StoreId
&& SqlFunctions.DateDiff("day", c2.TerminationDate.Value, c1.DateOfHire.Value) == 1
)
)
.Where(
c1 =>
!Context.EmployeeTask.Any(
t =>
t.ContractId == c1.Id
)
);
Oppure, in alternativa io li potevo combinare in quella clausola Where(), in questo modo:
var contracts = Context.Contract
.Where(
c1 =>
c1.EmployeeId == employeeId
&& !Context.Contract.Any(
c2 =>
c2.EmployeeId == employeeId
&& c1.StoreId == c2.StoreId
&& SqlFunctions.DateDiff("day", c2.TerminationDate.Value, c1.DateOfHire.Value) == 1
)
&& !Context.Employee_Task.Any(
t =>
t.ContractId == c1.Id
)
);
fa la catena di Dove() clausole di compromettere le prestazioni o sono loro equivalenti?
Penso LINQ compila sia ad una simile espressione, a prescindere da come si costruisce (finché non si chiama ToList() o l'ordinamento da qualche parte tra 'Where's) – sinelaw