如何将IQueryable <T>转换为Expression <Func <T,bool >>?

米莎·扎斯拉夫斯基(Misha Zaslavsky)

我只想构建一个动态过滤器。最后返回

 Expression<Func<Event, bool>>

我曾尝试使用Combine(AndAlso)表达式,但没有用,最后我发现有一些IQueryable查询效果很好,但是现在我如何将其转换为返回类型-

Expression<Func<Event, bool>>?

我的代码:

    public IQueryable<Event> GetBySearch(EventFilter search)
    {
        IQueryable<Event> query = this.Context.Events.AsQueryable();
        Expression<Func<Event, bool>> expression = null;

        if (search.CategoryId != 0)
        {
            query = query.Where(x => x.CategoryId == search.CategoryId);
        }

        if (search.SubCategoryId != 0)
        {
            query = query.Where(x => x.SubCategoryId == search.SubCategoryId);
        }

        expression = query.Expression as Expression<Func<Event, bool>>; //This convert is not working, it returns null.

        return this.Context.Events.Where(expression);
    }
山姆

任何您不只是执行以下操作的原因:

public IQueryable<Event> GetBySearch(EventFilter search)
{
    IQueryable<Event> query = this.Context.Events.AsQueryable();

    if (search.CategoryId != 0)
    {
        query = query.Where(x => x.CategoryId == search.CategoryId);
    }

    if (search.SubCategoryId != 0)
    {
        query = query.Where(x => x.SubCategoryId == search.SubCategoryId);
    }

    return query;
}

正如Florian在评论中所说,应避免返回IQueryables(如果可能)。简单的解决方案是返回一个列表:

public List<Event> GetBySearch(EventFilter search)
{
    IQueryable<Event> query = this.Context.Events.AsQueryable();

    if (search.CategoryId != 0)
    {
        query = query.Where(x => x.CategoryId == search.CategoryId);
    }

    if (search.SubCategoryId != 0)
    {
        query = query.Where(x => x.SubCategoryId == search.SubCategoryId);
    }

    return query.ToList();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将 BinaryExpression 转换为 Expression<Func<T, bool>>?

来自分类Dev

如何将Expression <Func <T,object >>转换为Expression <Func <T,bool >>?

来自分类Dev

将表达式转换为Expression <Func <T,bool >>

来自分类Dev

是否可以将Expression <Func <T,bool >>转换为Expression <Func <MyType,bool >>?

来自分类Dev

将Expression <Func <T,bool >>转换为Expression <Func <T1,bool >>,以便T是T1的成员

来自分类Dev

将Func <T,TProperty>转换为Expression <Func <T,Property >>

来自分类Dev

将谓词<T>转换为Func <T,bool>

来自分类Dev

将Expression <Func <T1 >>转换为Expression <Func <T1,T2 >>

来自分类Dev

如何在C#中将LambdaExpression转换为Expression <Func <T,bool >>

来自分类Dev

将Expression <Func <T,V >>转换为Expression <Func <T,Nullable <V >>>

来自分类Dev

如何将简单的视图模型转换为Func <T,bool>谓词?

来自分类Dev

将Expression <Func <T,TProperty >>转换为Expression <Func <object,object >>,反之亦然

来自分类Dev

将Expression <T,string >>转换为Expression <T,bool >>

来自分类Dev

方法重载中的 Expression<Func<T,bool>> 与 Func<T,bool>

来自分类Dev

如何将IEnumerable(无类型)转换为IQueryable <T>?

来自分类Dev

如何将IEnumerable(无类型)转换为IQueryable <T>?

来自分类Dev

如何将Func <T,object>转换为Func <Exception,object>

来自分类Dev

如何将Func <T,object>转换为Func <Exception,object>

来自分类Dev

如何将委托`Func<T1, Func<T2, Task<TResult>>>` 转换为`Func<T1, Task<Func<T2, TResult>>`?

来自分类Dev

无法从 `Expression<Func<T1, T2>>` 转换为 `Expression<Func<object, object>>`

来自分类Dev

正文Expression <Func <T,bool >>的复杂编辑

来自分类Dev

ConcurrentDictionary-将addValueFactory(Func <string,T,T>)转换为updateValueFactory(Func <string,T,T>)?

来自分类Dev

将Expression <Func <TModel,TValue >>转换为Expression <Func <TModel,bool >>

来自分类Dev

将Expression <Func <TEntity,IEnumerable <TProperty >>> valueSelector,TValue []值转换为Expression <Func <TElement,bool >>

来自分类Dev

C#成员表达式Func <T,object>转换为Func <T,bool> MethodBinaryExpression

来自分类Dev

如何从 Expression<Func<TSource, TSourceMember>> 转换为 Func<TSource, bool> 条件

来自分类Dev

无法将OrderBy(Func <T,IComperable>)转换为SQL

来自分类Dev

将Expression <Func <T,bool >>传递到存储库的单元测试查询

来自分类Dev

在IGrouping中使用Where(Expression <Func <T,bool >>)

Related 相关文章

  1. 1

    如何将 BinaryExpression 转换为 Expression<Func<T, bool>>?

  2. 2

    如何将Expression <Func <T,object >>转换为Expression <Func <T,bool >>?

  3. 3

    将表达式转换为Expression <Func <T,bool >>

  4. 4

    是否可以将Expression <Func <T,bool >>转换为Expression <Func <MyType,bool >>?

  5. 5

    将Expression <Func <T,bool >>转换为Expression <Func <T1,bool >>,以便T是T1的成员

  6. 6

    将Func <T,TProperty>转换为Expression <Func <T,Property >>

  7. 7

    将谓词<T>转换为Func <T,bool>

  8. 8

    将Expression <Func <T1 >>转换为Expression <Func <T1,T2 >>

  9. 9

    如何在C#中将LambdaExpression转换为Expression <Func <T,bool >>

  10. 10

    将Expression <Func <T,V >>转换为Expression <Func <T,Nullable <V >>>

  11. 11

    如何将简单的视图模型转换为Func <T,bool>谓词?

  12. 12

    将Expression <Func <T,TProperty >>转换为Expression <Func <object,object >>,反之亦然

  13. 13

    将Expression <T,string >>转换为Expression <T,bool >>

  14. 14

    方法重载中的 Expression<Func<T,bool>> 与 Func<T,bool>

  15. 15

    如何将IEnumerable(无类型)转换为IQueryable <T>?

  16. 16

    如何将IEnumerable(无类型)转换为IQueryable <T>?

  17. 17

    如何将Func <T,object>转换为Func <Exception,object>

  18. 18

    如何将Func <T,object>转换为Func <Exception,object>

  19. 19

    如何将委托`Func<T1, Func<T2, Task<TResult>>>` 转换为`Func<T1, Task<Func<T2, TResult>>`?

  20. 20

    无法从 `Expression<Func<T1, T2>>` 转换为 `Expression<Func<object, object>>`

  21. 21

    正文Expression <Func <T,bool >>的复杂编辑

  22. 22

    ConcurrentDictionary-将addValueFactory(Func <string,T,T>)转换为updateValueFactory(Func <string,T,T>)?

  23. 23

    将Expression <Func <TModel,TValue >>转换为Expression <Func <TModel,bool >>

  24. 24

    将Expression <Func <TEntity,IEnumerable <TProperty >>> valueSelector,TValue []值转换为Expression <Func <TElement,bool >>

  25. 25

    C#成员表达式Func <T,object>转换为Func <T,bool> MethodBinaryExpression

  26. 26

    如何从 Expression<Func<TSource, TSourceMember>> 转换为 Func<TSource, bool> 条件

  27. 27

    无法将OrderBy(Func <T,IComperable>)转换为SQL

  28. 28

    将Expression <Func <T,bool >>传递到存储库的单元测试查询

  29. 29

    在IGrouping中使用Where(Expression <Func <T,bool >>)

热门标签

归档