Wyrażenia predykatowe wielokrotnego użytku w zapytaniach LINQ to Entities

Pewien zestaw kryteriów pojawiających się w wielu różnych zapytaniach w naszej aplikacji powoli stawał się coraz bardziej złożony. Aby uniknąć powielania tego kodu, chcę podzielić te kryteria na metodę, która zwraca warunki jakoWyrażenie które można z kolei zastosować w razie potrzeby:

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

Ponownie użyte jako takie:

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

Jednak poniższe stwierdzenie nie zostanie skompilowane, ponieważc. Faktura jest po prostuICollection.

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

Czy w jakikolwiek sposób można użyć takiego wyrażenia?

questionAnswers(1)

yourAnswerToTheQuestion