小编Tom*_*ort的帖子

替换表达式树中的类型

我正在努力修改表达式树。我简化了示例,以便更容易在此处显示。让我们从两个类开始:

    public class Filter
    {
        public string FilterableProperty1 { get; set; }
        public string FilterableProperty2 { get; set; }
    }

    public class Entity
    {
        public string FilterableProperty1 { get; set; }
        public string FilterableProperty2 { get; set; }
        public string NonFilterableProperty { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

Filter 类中的所有属性也存在于 Entity 类中。现在我想使用 Filter 类通过如下方法返回所需的实体:

    public IEnumerable<Entity> GetEntities(Expression<Func<Filter, bool>> filter)
    {
        Expression<Func<Entity, bool>> convertedFilter = Expression.Lambda<Func<Entity, bool>>(
            filter.Body,
            Expression.Parameter(typeof(Entity), filter.Parameters[0].Name));

        using (MyEntities entities = new MyEntities())
        {
            return entities.Entities.Where(convertedFilter);
        }
    }
Run Code Online (Sandbox Code Playgroud)

所以基本上我只是改变表达式参数的类型。现在,当我像这样调用该函数时:

    public …
Run Code Online (Sandbox Code Playgroud)

c# linq lambda expression

5
推荐指数
1
解决办法
4972
查看次数

标签 统计

c# ×1

expression ×1

lambda ×1

linq ×1