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?