를 사용하여 많은 테이블. 나는 각 테이블에 대한 모든 필드를 검색하고 정렬을 쓰는 것을 피하고 싶다. 그래서 표현식 트리를 사용하고 싶습니다. 쿼리를 동적으로 작성하려고합니다.동적 쿼리 나 사용자가 드롭 다운 목록에서 다음을 선택합니다하는 형태가 식 트리
나는 사용자 입력에 따라 select
, where
및 orderby
방법에 대한 식 트리를 생성하는 일반적인 방법을 쓰고 싶어요. System.Reflection
을 사용하여 쿼리중인 Type
을 얻을 수 있습니다 (모든 테이블 유형은 LinqToSql을 사용하고 있습니다).
표현식 트리를 구성하는 방법을 모르겠습니다.
private static List<T> GetSortedData<T>(string sortColumnName)
{
var type = typeof(T);
var property = type.GetProperty(sortColumnName);
var parameter = Expression.Parameter(type, "p");
var propertyAccess = Expression.MakeMemberAccess(parameter, property);
var orderByExp = Expression.Lambda(propertyAccess, parameter);
MethodCallExpression resultExp = Expression.Call(typeof(Queryable), "OrderBy", new Type[] { type, property.PropertyType }, WHAT_SHOULD_BE_HERE, Expression.Quote(orderByExp));
return (List<T>)Expression.Lambda(resultExp).Compile().DynamicInvoke();
}
어떻게 select
, sort
및 orderby
동적으로 사용하는 식 트리를 구현할 수 있습니다 여기에
는 지금까지이 무엇입니까?
어떤 방법입니다 – user145610