二进制表达式

时间:2012-06-24 08:03:51

标签: .net silverlight linq expression-trees

我想从字符串参数构建LINQ查询。 我在Silverlight中有一个网格,我想按列过滤查询结果。

当用户点击其中一个网格列上的按钮时,将显示列表视图。 他们在列表视图中选择一个或多个值,然后单击过滤器按钮。 在代码中,我得到选定的值和列成员,它是我绑定到网格的对象的属性。

例如,我有一个具有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中的查询如下所示(e =&gt; e.Department.Name == departmentName)

但我不知道如何从字符串参数构建此查询。

任何人都可以帮助我?

0 个答案:

没有答案