Come estendere il predicato nel parametro espressione lambda

.net c# expression-trees lambda linq

Domanda

Vorrei estendere il parametro expression nel mio metodo per aggiungere i miei filtri. Sto cercando di fare qualcosa di simile in basso, ma la sintassi è sbagliata:

public static IList<MyPage> DoSomething<T>(Expression<Func<T, bool>> predicate)
{
    return DataStore().GetPages().Where(p => p.PublishDate < DateTime.Now && predicate)
}

Il compilatore si lamenta si lamenta in Visual Studio 2012 con questo errore:

Errore 29 L'operatore '&&' non può essere applicato agli operandi di tipo ' bool ' e ' System.Linq.Expressions.Expression<System.Func<T,bool>> '

.Where(predicate) il predicato prima sarebbe meglio che alimentare se indietro come. .Where(predicate) ? Come lo faresti?

Risposta accettata

Estendere il predicato prima sarebbe meglio che alimentare se indietro come. Dove (predicato)? Come lo faresti?

Sì, ed esattamente così, se capisco cosa stai suggerendo correttamente. Puoi catena. .Where() piace questo:

public static IList<MyPage> DoSomething<T>(Expression<Func<T, bool>> predicate)
{
    return DataStore().GetPages().Where(p => p.PublishDate < DateTime.Now).Where(predicate);
}


Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché