Question

Je me demande s'il y a des conséquences sur les performances des multiples déclarations .Lorsque (). Par exemple, je pourrais écrire:

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
                )
        );

Ou bien je pourrais les combiner en une clause where (), comme suit:

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
                )
        );

Est-ce que la chaîne de clauses Lorsque nui au rendement ou sont-elles équivalentes ()?

Était-ce utile?

La solution

Dans LINQ aux objets, il y aura un coup très faible performance, parce que fondamentalement la chaîne iterator sera plus -. Aller chercher le prochain moyen d'éléments allant un appel chaîne de MoveNext () longue

Dans LINQ to SQL et fournisseurs similaires, je vous attendriez même SQL à générer de toute façon, il ne serait pas la performance d'impact là-bas.

EDIT: Depuis la rédaction de ce que j'ai trouvé un peu plus sur la mise en œuvre LINQ des objets - c'est un peu plus compliqué ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top