동적 LINQ 쿼리를 사용하여 클래스의 모든 속성에서 일부 텍스트로 검색하려고합니다. 나는 표현을 생성하기 위해 다음 함수를 사용하고있다. 메소드에 속성 이름과 검색 텍스트를 전달하고 있습니다. 해당 메서드에서 속성 형식이 String이면 잘 작동합니다. 속성 유형이 int, DateTime, GUID 인 경우 그러면 작동하지 않습니다.동적 LINQ에 포함을 사용하는 동안 유형을 동적으로 문자열로 변환 하시겠습니까?
우리가 알고있는 바로는 요소 배열 또는 문자열에 대한 메서드 만 포함합니다. 속성 값을 문자열로 변환해야한다고 생각합니다. 그래서 그것을하는 방법? 설명이있는 해결 방법은 도움이 충분합니다.
i 수집 된 코드는 this입니다.
public static Expression<Func<T, bool>> ContainsExp<T>(string propertyName, string contains)
{
var parameterExp = Expression.Parameter(typeof(T), "type");
var propertyExp = Expression.Property(parameterExp, propertyName);
MethodInfo method = typeof(string).GetMethod("Contains", new[] { typeof(string) });
var someValue = Expression.Constant(contains, typeof(string));
var containsMethodExp = Expression.Call(propertyExp, method, someValue);
return Expression.Lambda<Func<T, bool>>(containsMethodExp, parameterExp);
}
확실하지가 이해하기 :
어쨌든, 여기에 적어도
integer
뿐만 아니라string
을 위해 작동합니다 샘플입니다 당신은'DateTime'에 싶어 사용'String.Contains'을? –더 나은 이해를 위해 질문이 업데이트되었습니다. 나는 들어있는 동적 Linq 쿼리를 원한다. 현재 코드는 문자열 데이터 형식으로 잘 작동합니다. 다른 데이터 유형 (int, DateTime, GUID)에서는 작동하지 않습니다. – Kartheek