2
contains 연산자로 linq 표현식을 동적으로 작성하려고합니다.linq 표현식 생성 (contains 포함)의 잘못된 점
이 주제와 관련된 여러 글을 읽은 후, 나는 나를 수행 할 수 있도록 다음과 같은 코드로 올라와있다 평가처럼 "포함"
internal static Expression<Func<TEntity, bool>> StringContains<TEntity>(string propertyName, string subString)
{
MethodInfo contains = typeof(JsonLinqParser_Paser).GetMethod("Like");
var param = Expression.Parameter(typeof(TEntity));
var body = Expression.Call(contains, Expression.Property(param, propertyName), Expression.Constant(subString, typeof(string)));
var lambda = Expression.Lambda<Func<TEntity, bool>>(body, param);
return lambda;
}
public static bool Like(string a, string b)
{
return a.Contains(b);
}
을 그리고 이것은과 같이 호출됩니다
var expression = Expression.Lambda<Func<TEntity, bool>>(StringContains<TEntity>("FIPSCO_STR", _myStringValue), param);
다음과 같이
그러나, 런타임에 오류가 발생합니다 : 유형 의
식 'System.Func`2 [DAL.BestAvailableFIP,이 선택 System.Boolean] 창 유형 를 사용할 수 없습니다'선택 System.Boolean '
"DAL.BestAvailableFIP"는 "TEntity"타입이다
.
이 모든 것이 람다 식에 대한 지식 부족과 관련이 있다고 확신합니다. 아무도 내가 뭘 잘못하고 있다고 말할 수 있습니까?