1

我想从字符串参数构建一个 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 中的查询如下所示 Where(e => e.Department.Name == departmentName)

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

任何人都可以帮助我吗?

4

0 回答 0