前の記事で、LINQ to SQLのwhere句を動的に組み立てたい!と思ってたけど、LINQ to SQLのwhere句って結局ExpressionTreeになるらしい。
ってことは、ExpressionTreeをガリガリ組み立てれば動的にWhere句作れるんじゃない?と考えた!
挫折した!(早)
だってめんどくさいんだもん。
using (var ctx = new EduDataContext(
Settings.Default.EmpMngConnectionString))
{
ctx.Log = Console.Out;
ParameterExpression param = Expression.Parameter(typeof(Employees), "emp");
Expression<Func<Employees, bool>> ex = Expression.Lambda<Func<Employees, bool>>(
Expression.Equal(
Expression.Property(param, "Name"),
Expression.Constant(name)),
param);
return ctx.Employees.Where(ex).ToArray();
}
どこからか与えられたname変数とEmployeesクラスのNameプロパティの値が等しいか?というだけでもこんな感じ。
これを動的に組み立てるのは超めんどくさそう。
ってことで挫折しましたorz
前の記事のやり方でいく!
# Genericsの<>の中身が消えてたのを修正。