在linq中使用运算符进行多个groupby显示与使用表达式不同

ngunha02

我通过阅读《动作书》中的Linq来学习Linq。在第5章中,作者执行了多个分组。linq表达式如下:

var query =
  from book in SampleData.Books
  group new {book.Title, book.Publisher.Name} by book.Subject into grouping
  select new {Subject=grouping.Key.Name, Books=grouping};

作者的输出为: 在此处输入图片说明

我通过使用运算符而不是表达式进行重写。我尝试过此方法,但是LinqPad中显示的结果与上面的结果不同:

var query2 = SampleData.Books.GroupBy(
                book => new {book.Subject}
            )
            .Select(book => new {
                    Subject = book.Key.Subject.Name, 
                    Children = book.GroupBy(b => new {b.Subject.Description, b.Subject.Name})}
            );

这是我的输出: 在此处输入图片说明

雨果·符恩

第一个查询执行单个groupBy,第二个查询执行两个嵌套的groupBy。

为了准确地表示方法语法中的第一个查询,您需要GroupBy重载,它需要两个参数:一个为每个元素选择键,另一个为选择组中每个元素的表示形式

.GroupBy(book => book.Subject, book => new {book.Title, book.Publisher.Name} )

(请注意,您无需创建只有一个成员的匿名对象:book => book.Subject效果与book => new{book.Subject}

然后,您可以对GroupBy运算符的结果执行最终选择:

.Select(grouping => new {Subject=grouping.Key.Name, Books=grouping});

如果使用更加模糊的GroupBy重载,它需要三个参数:键选择器,元素选择器和结果选择器,则也可以仅使用GroupBy命令来完成所有操作

.GroupBy(book => book.Subject,  
                 // select a key
         book => new {book.Title, book.Publisher.Name},
                 // select the elements of each group
         grouping => new {Subject=grouping.Key.Name, Books=grouping} ) 
                 // select the final result

这与前两个命令的组合完全相同。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在布尔表达式中使用=>运算符

来自分类Dev

在 XPath 表达式中使用 OR 运算符

来自分类Dev

Python在布尔表达式中使用多个运算符

来自分类Dev

在 lambda 表达式中使用三元条件运算符时,Linq select 返回错误结果

来自分类Dev

在CASE WHEN中使用IN运算符,在GROUP BY表达式中使用SQL

来自分类Dev

如何在正则表达式.Net中使用AND运算符和NOT运算符

来自分类Dev

可以在if语句中使用赋值运算符。好像使用了布尔表达式

来自分类Dev

使用OR运算符在LINQ表达式中添加between子句

来自分类Dev

'await'运算符只能在异步lambda表达式错误中使用

来自分类Dev

在Kotlin中使用Elvis运算符时,如何取反布尔表达式?

来自分类Dev

如何在Bash中的复杂条件表达式中使用逻辑非运算符?

来自分类Dev

在C ++ lldb中使用重载运算符评估表达式

来自分类Dev

'await'运算符只能在异步lambda表达式中使用

来自分类Dev

无法在Lambda表达式中使用C#IS运算符?

来自分类Dev

无法在mongodb中的$ in运算符中使用正则表达式

来自分类Dev

在Angular ng-if表达式中使用&(按位AND运算符)

来自分类Dev

在表达式树中使用隐式转换运算符

来自分类Dev

C#-无法在Lambda表达式中使用“ is”运算符

来自分类Dev

如何在Bash中的复杂条件表达式中使用逻辑非运算符?

来自分类Dev

Unix中使用or运算符的正则表达式

来自分类Dev

如何在ssrs表达式中使用IN运算符

来自分类Dev

如何在XSLT的正则表达式模式中使用NOT运算符(^)?

来自分类Dev

如何在实体框架lamba表达式中使用Like运算符

来自分类Dev

在 Perl 正则表达式中使用“and”运算符

来自分类Dev

在 PHP 中使用 OR 运算符而不是 true 或 false 获取文字表达式值

来自分类Dev

C 表达式中是否允许使用多个变量的副作用运算符?

来自分类Dev

使用OR运算符的Lambda表达式

来自分类Dev

使用OR运算符的Python正则表达式

来自分类Dev

使用或运算符的相似测试表达式?

Related 相关文章

  1. 1

    在布尔表达式中使用=>运算符

  2. 2

    在 XPath 表达式中使用 OR 运算符

  3. 3

    Python在布尔表达式中使用多个运算符

  4. 4

    在 lambda 表达式中使用三元条件运算符时,Linq select 返回错误结果

  5. 5

    在CASE WHEN中使用IN运算符,在GROUP BY表达式中使用SQL

  6. 6

    如何在正则表达式.Net中使用AND运算符和NOT运算符

  7. 7

    可以在if语句中使用赋值运算符。好像使用了布尔表达式

  8. 8

    使用OR运算符在LINQ表达式中添加between子句

  9. 9

    'await'运算符只能在异步lambda表达式错误中使用

  10. 10

    在Kotlin中使用Elvis运算符时,如何取反布尔表达式?

  11. 11

    如何在Bash中的复杂条件表达式中使用逻辑非运算符?

  12. 12

    在C ++ lldb中使用重载运算符评估表达式

  13. 13

    'await'运算符只能在异步lambda表达式中使用

  14. 14

    无法在Lambda表达式中使用C#IS运算符?

  15. 15

    无法在mongodb中的$ in运算符中使用正则表达式

  16. 16

    在Angular ng-if表达式中使用&(按位AND运算符)

  17. 17

    在表达式树中使用隐式转换运算符

  18. 18

    C#-无法在Lambda表达式中使用“ is”运算符

  19. 19

    如何在Bash中的复杂条件表达式中使用逻辑非运算符?

  20. 20

    Unix中使用or运算符的正则表达式

  21. 21

    如何在ssrs表达式中使用IN运算符

  22. 22

    如何在XSLT的正则表达式模式中使用NOT运算符(^)?

  23. 23

    如何在实体框架lamba表达式中使用Like运算符

  24. 24

    在 Perl 正则表达式中使用“and”运算符

  25. 25

    在 PHP 中使用 OR 运算符而不是 true 或 false 获取文字表达式值

  26. 26

    C 表达式中是否允许使用多个变量的副作用运算符?

  27. 27

    使用OR运算符的Lambda表达式

  28. 28

    使用OR运算符的Python正则表达式

  29. 29

    使用或运算符的相似测试表达式?

热门标签

归档