Wiederverwendbare Prädikatausdrücke in LINQ to Entities-Abfragen

Ein bestimmter Satz von Kriterien, der in vielen verschiedenen Abfragen in unserer Anwendung vorkommt, ist langsam komplexer geworden. Um eine Verdoppelung dieses Codes zu vermeiden, möchte ich diese Kriterien in eine Methode aufteilen, die die Bedingungen als zurückgibtAusdruck das kann wiederum angewendet werden, wenn nötig:

public Expression<Func<Invoice, bool>> GetComplexPredicate()
{
    // complex predicate is returned as an Expression:
    return c => ...
}

Als solches wiederverwendet:

var result = repository.Invoice.Where(GetComplexPredicate())

Die folgende Anweisung wird jedoch nicht kompiliert, dac.Rechnung ist nur einICollection.

var result = repository.Customer
    .Where(c => c.Country == "US" && c.Invoice.Any(GetComplexPredicate()))

Ist es in irgendeiner Weise möglich, diesen Ausdruck zu verwenden?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage