6
mam metody takie jak to:Nie można przekonwertować wyrażenia lambda na typ delegata
public ICollection<T> GetEntitiesWithPredicate(Expression<Func<T, bool>> predicate)
{
// ...
}
robię wywołanie metody w innej klasy jak
service.GetEntitiesWithPredicate(x => x.FoobarCollection.Where(y => y.Text.Contains(SearchText)));
ale zawsze otrzymuję ten błąd:
Lambda expression cannot be converted to '<typename>' because '<typename>' is not a delegate type
Co muszę zmienić, aby uzyskać tę pracę?
Edit:
używam Entity Framework 6 i jeśli mogę użyć Obojętnie() zamiast Gdzie(), zawsze dostać tylko 1 wynik z powrotem ... Chcę przekazać wyraz mojego EF-realizacji:
public ICollection<T> GetEntriesWithPredicate(Expression<Func<T, bool>> predicate)
{
using (var ctx = new DataContext())
{
return query.Where(predicate).ToList();
}
}
prawdopodobnie oznaczało 'Obojętnie()' 'Gdzie zamiast()'. Twój 'Func' musi zwrócić 'bool', ale' Where' zwraca 'IEnumerable '. –
haim770
te nie są kompatybilne. –
Czy na pewno masz na myśli 'GetEntitiesWithPredicate (wyrażenie> predykat)', a nie tylko 'GetEntitiesWithPredicate (Func predicate)'? Dlaczego potrzebujesz "Wyrażenie"? –