Expression<Func<T, bool>>
을 매개 변수로 사용하는 방법이 있습니다. List.Find() 메서드에서 술어로 사용하고 싶습니다. 그러나 List를 취하는 술어로 변환 할 수 없습니다. 이 작업을 수행하는 간단한 방법을 알고 있습니까?식 <Func <T, bool>>을 술부로 변환하는 방법 <T>
public IList<T> Find<T>(Expression<Func<T, bool>> expression) where T : class, new()
{
var list = GetList<T>();
var predicate = [what goes here to convert expression?];
return list.Find(predicate);
}
tvanfosson 및 280Z28 답변을 결합 업데이트
, 지금이 사용하고 있습니다 :
public IList<T> Find<T>(Expression<Func<T, bool>> expression) where T : class, new()
{
var list = GetList<T>();
return list.Where(expression.Compile()).ToList();
}
완벽한 같은 IL를 생성
! 감사! –
또는 : pred = func.Invoke; –
그래, func.Invoke가 더 좋아 보인다. –