文字列パラメーターから LINQ クエリを作成したいと思います。Silverlight にグリッドがあり、クエリの結果を列でフィルター処理したいと考えています。
ユーザーがグリッド列の 1 つのボタンをクリックすると、リストビューが表示されます。リストビューで 1 つ以上の値を選択し、フィルター ボタンをクリックします。コードでは、選択した値と、グリッドにバインドしたオブジェクトのプロパティである列メンバーを取得します。
たとえば、FullName プロパティを持つ従業員オブジェクトがあります。そのため、FullName プロパティを文字列として取得し、フィルターから選択した値を取得します。
これらの情報から LINQ クエリを作成したいと思います。
できます:
protected Expression<Func<T, bool>> CreateGetExpression<T>(int id)
{
ParameterExpression e = Expression.Parameter(typeof(T), "e");
PropertyInfo propInfo = typeof(T).GetProperty(KeyPropertyName);
MemberExpression m = Expression.MakeMemberAccess(e, propInfo);
ConstantExpression c = Expression.Constant(id, typeof(int));
BinaryExpression b = Expression.Equal(m, c);
Expression<Func<T, bool>> lambda = Expression.Lambda<Func<T, bool>>(b, e);
return lambda;
}
私の問題は、複雑なプロパティがある場合です。たとえば、従業員が働いている部門名を含む列があります。
LINQ でのクエリは次のようになります Where(e => e.Department.Name == departmentName)
しかし、文字列パラメーターからこのクエリを作成する方法がわかりません。
誰でも私を助けることができますか?