如何在linq查询中合并表达式

费利佩·奥里亚尼

我有以下代码来创建表达式:

Expression<Func<Process, bool>> exp = null;

if (condition)
{
    exp = x => x.Hierarchy.StartWith(hierarchy) && x.Level == 2;
}
/*
   other conditions that modify the exp variable
*/
else
{
    exp = x => x.Hierarchy == hierarchy && x.Level == 3;
}

根据某些条件,此查询可能会有所不同。我将在以下查询中使用此表达式,但是,我想explinq查询中将表达式变量作为样本:

var query = from p in queryable
            join c in confQueryable on p.Id equals c.Id
            where p.ParentId == parentProcessId && exp // AND exp here...
            let hasChild = p.Processes.Any()
            select new ViewModel
            {
               Code = p.Code,
               Text = string.Format("{0}: {1}", c.Name, p.Name), // use c variable
               ParentId = p.Id,
               Value = p.Id.ToString(),
               HasChildren = hasChild, // use hasChild variable
            };

我无法将其转换为linq方法,因为我返回的ViewModel不是实体。如果这样做,我将不知道如何在linq方法中使用joinandlet命令。

该查询将使用NHibernate在数据库中执行。

如何Expression<Func<T, bool>>Linq查询中合并

谢谢。

谢尔盖·利特维诺夫(Sergey Litvinov)

为什么不能使用像这样的链方法

var query =
    queryable
        .Where(exp)
        .Join(confQueryable, p => p.Id, c => c.Id, (p, c) => new {p, c})
        .Where(@t => p.ParentId == parentProcessId)
        .Select(@t => new {@t, hasChild = p.Processes.Any()})
        .Select(@t => new ViewModel
        {
            Code = p.Code,
            Text = string.Format("{0}: {1}", c.Name, p.Name), // use c variable
            ParentId = p.Id,
            Value = p.Id.ToString(),
            HasChildren = hasChild, // use hasChild variable
        });

我不了解nHibernate,但是对于Entity Framework,这种linq查询应该可以工作。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在linq查询中传递表达式列表

来自分类Dev

如何在正则表达式中合并行?

来自分类Dev

如何在R中折叠/合并表达式对象?

来自分类Dev

如何在LINQ表达式中预设变量?

来自分类Dev

如何在Linq中参数化布尔表达式?

来自分类Dev

如何在linq中附加表达式?

来自分类Dev

如何在Linq表达式中处理null

来自分类Dev

如何在LINQ表达式中包含多个层次?

来自分类Dev

如何在linq lambda表达式中添加条件

来自分类Dev

如何在Razor的LINQ表达式中嵌入JavaScript?

来自分类Dev

如何在Linq-To-SQL查询中为可导航对象添加动态生成的where表达式?

来自分类Dev

如何在一个表达式中合并两个词典(合并词典)?

来自分类Dev

如何在一个表达式中合并两个词典(合并词典)?

来自分类Dev

LINQ查询表达式中的子查询

来自分类Dev

LINQ查询表达式中的子查询

来自分类Dev

Linq投影如何在扩展方法和查询表达式之间工作

来自分类Dev

如何在REST API中的查询参数之间表达高级表达式?

来自分类Dev

如何编写递归lambda表达式(LINQ查询)

来自分类Dev

如何使用LinQ lambda表达式编写此查询

来自分类Dev

使用LINQ表达式中的Join的嵌套查询

来自分类Dev

LINQ查询中无法访问的表达式代码

来自分类Dev

如何将表达式传递到LINQ查询中?

来自分类Dev

如何在C#中合并(或动态构建和组合)lambda表达式?

来自分类Dev

如何在自定义指令Angularjs中合并表达式

来自分类Dev

如何在C#中合并(或动态构建和组合)lambda表达式?

来自分类Dev

如何在LINQ表达式中包含包含的表中的字段?

来自分类Dev

如何在linq lambda表达式中使用ToShortDateString?

来自分类Dev

如何在LINQ表达式之间转换

来自分类Dev

如何合并图例中多个项目的表达式?

Related 相关文章

  1. 1

    如何在linq查询中传递表达式列表

  2. 2

    如何在正则表达式中合并行?

  3. 3

    如何在R中折叠/合并表达式对象?

  4. 4

    如何在LINQ表达式中预设变量?

  5. 5

    如何在Linq中参数化布尔表达式?

  6. 6

    如何在linq中附加表达式?

  7. 7

    如何在Linq表达式中处理null

  8. 8

    如何在LINQ表达式中包含多个层次?

  9. 9

    如何在linq lambda表达式中添加条件

  10. 10

    如何在Razor的LINQ表达式中嵌入JavaScript?

  11. 11

    如何在Linq-To-SQL查询中为可导航对象添加动态生成的where表达式?

  12. 12

    如何在一个表达式中合并两个词典(合并词典)?

  13. 13

    如何在一个表达式中合并两个词典(合并词典)?

  14. 14

    LINQ查询表达式中的子查询

  15. 15

    LINQ查询表达式中的子查询

  16. 16

    Linq投影如何在扩展方法和查询表达式之间工作

  17. 17

    如何在REST API中的查询参数之间表达高级表达式?

  18. 18

    如何编写递归lambda表达式(LINQ查询)

  19. 19

    如何使用LinQ lambda表达式编写此查询

  20. 20

    使用LINQ表达式中的Join的嵌套查询

  21. 21

    LINQ查询中无法访问的表达式代码

  22. 22

    如何将表达式传递到LINQ查询中?

  23. 23

    如何在C#中合并(或动态构建和组合)lambda表达式?

  24. 24

    如何在自定义指令Angularjs中合并表达式

  25. 25

    如何在C#中合并(或动态构建和组合)lambda表达式?

  26. 26

    如何在LINQ表达式中包含包含的表中的字段?

  27. 27

    如何在linq lambda表达式中使用ToShortDateString?

  28. 28

    如何在LINQ表达式之间转换

  29. 29

    如何合并图例中多个项目的表达式?

热门标签

归档