C# 如何";查询语法";“集团”;x";由x.something 1和x.something 2组成?

C# 如何";查询语法";“集团”;x";由x.something 1和x.something 2组成?,c#,linq,C#,Linq,我正在练习LINQ查询语法和方法语法,以学习如何将表达式转换为另一种语法 我在如何将此方法语法转换为查询语法方面遇到了问题 var groupNew = dogs.GroupBy(x =>new { x.Color, x.Breed}); var groupNew2 = groupNew.SelectMany(x => x); 输出: 这是我编写的查询语法,我认为它可以工作,但编译器不接受 var groupQuery = from d in dogs

我正在练习LINQ查询语法和方法语法,以学习如何将表达式转换为另一种语法

我在如何将此方法语法转换为查询语法方面遇到了问题

  var groupNew = dogs.GroupBy(x =>new { x.Color, x.Breed});
  var groupNew2 = groupNew.SelectMany(x => x);
输出:

这是我编写的查询语法,我认为它可以工作,但编译器不接受

var groupQuery = from d in dogs
                 group d by d.Color and d.Breed into newGroup
                 select new { age = newGroup.Key, color = d.Color, breed = d.breed };
如果我正确地测试了新类型,那么与方法语法不同,新类型只返回查询的年龄

测试数据:

Dog[] dogs = new Dog[] {
            new Dog(2, "Poms", "Green"),
            new Dog(10, "Poms", "Green"),
            new Dog(3, "Poms", "Green"),
            new Dog(4, "Askal", "White"),
            new Dog(2, "Askal", "Black"),
            new Dog(2, "German", "Brown"),
            new Dog(2, "Shitsu", "White"),
            new Dog(3, "Dalgom", "Brown"),
            new Dog(1, "Dalgom", "Brown"),
            new Dog(2, "Dalgom", "Black"),
            new Dog(4, "Chiwawa", "Blackpink"),
            new Dog(3, "Chiwawa", "Blackpink"),

        };

这是查询语法中的LINQ查询:

var groupNew = from dog in dogs // GroupBy
               group dog by new { dog.Color, dog.Breed } into groups
               select groups;
var groupNew2 = from g in groupNew // SelectMany
                from dog in g
                select dog;
或在单个查询中:

var groupNew2 = from g in (
                  from dog in dogs
                  group d by new { d.Color, d.Breed } into groups
                  select groups
                )
                from dog in g
                select dog;

这是查询语法中的LINQ查询:

var groupNew = from dog in dogs // GroupBy
               group dog by new { dog.Color, dog.Breed } into groups
               select groups;
var groupNew2 = from g in groupNew // SelectMany
                from dog in g
                select dog;
或在单个查询中:

var groupNew2 = from g in (
                  from dog in dogs
                  group d by new { d.Color, d.Breed } into groups
                  select groups
                )
                from dog in g
                select dog;

首先,在方法语法中,您是按颜色和品种分组的——在查询语法中,您只是按颜色分组。我希望在查询语法中使用新的{d.Color,d.Breed}来创建
groupd。(顺便说一句,如果你能发个帖子,我们会更容易尝试。)@JonSkeet这是我到目前为止尝试过的“d组按d.颜色和d.繁殖到新组”是错误的。因此,我必须创建新的{}来使用许多分组选项对结果进行分组。首先,在方法语法中,您是按颜色和品种分组的,在查询语法中,您只是按颜色分组。我希望在查询语法中使用新的{d.Color,d.Breed}
来创建
groupd。(顺便说一句,如果你能发个帖子,我们会更容易尝试。)@JonSkeet这是我到目前为止尝试过的“d组按d.颜色和d.繁殖到新组”是错误的。因此,我必须创建新的{}以使用许多分组选项对结果进行分组。这正是我需要的,因为我也希望查询返回狗。这正是我需要的,因为我也希望查询返回狗。