ユーザーがドロップダウン リストから次の項目を選択するフォームがあります。
table_name
columnName_to_sort_by
columnName_to_search_in
ユーザーはSearch_text
テキストボックスに入力する必要があります
フォームは、多くのテーブルからデータを取得します。各テーブルのすべてのフィールドの並べ替えと検索を作成することは避けたいと思います。これが、式ツリーを使用したい理由です。クエリを動的に作成したい。
ユーザー入力に応じてselect
、where
、メソッドの式ツリーを生成するジェネリック メソッドを作成したいと考えています。クエリされているものを取得するためにorderby
使用できます(すべてのテーブルは型です - 私は LinqToSql を使用しています)。System.Reflection
Type
式ツリーの作成方法がわかりません。
これが私がこれまでに持っているものです:
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