6
Tôi có một phương pháp như thế này:Không thể chuyển đổi biểu thức lambda vào loại đại biểu
public ICollection<T> GetEntitiesWithPredicate(Expression<Func<T, bool>> predicate)
{
// ...
}
tôi làm một cuộc gọi phương thức trong lớp khác như
service.GetEntitiesWithPredicate(x => x.FoobarCollection.Where(y => y.Text.Contains(SearchText)));
nhưng tôi luôn nhận được lỗi này:
Lambda expression cannot be converted to '<typename>' because '<typename>' is not a delegate type
Tôi phải làm gì để thay đổi công việc này?
Edit:
tôi sử dụng Entity Framework 6 và nếu tôi sử dụng Any() thay vì ở đâu(), tôi luôn luôn chỉ nhận được 1 kết quả trở lại ... Tôi muốn vượt qua các biểu thức để EF-thực hiện của tôi:
public ICollection<T> GetEntriesWithPredicate(Expression<Func<T, bool>> predicate)
{
using (var ctx = new DataContext())
{
return query.Where(predicate).ToList();
}
}
Bạn có thể có nghĩa là 'Any() 'thay vì' đâu() '. 'Func' của bạn cần trả về 'bool' nhưng' Where' đang trả về 'IEnumerable '. –
haim770
những thứ không tương thích. –
Bạn có chắc chắn bạn có nghĩa là 'GetEntitiesWithPredicate (Expression> predicate)' và không chỉ 'GetEntitiesWithPredicate (Func predicate)'? Tại sao bạn cần 'Expression'? –