Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ group by查询帮助:使用键选择另一个相关表_C#_Linq_Linq To Sql - Fatal编程技术网

C# LINQ group by查询帮助:使用键选择另一个相关表

C# LINQ group by查询帮助:使用键选择另一个相关表,c#,linq,linq-to-sql,C#,Linq,Linq To Sql,请帮助我完成以下查询: var results = from species in db.Species join cats in db.Categories on species.CategoryId equals cats.CategoryId join groups in db.Groups on cats.GroupId equals groups.GroupId group groups by grou

请帮助我完成以下查询:

var results = from species in db.Species
              join cats in db.Categories on species.CategoryId equals cats.CategoryId
              join groups in db.Groups on cats.GroupId equals groups.GroupId
              group groups by groups into g
              select new GroupWithCategoryChildren
              {
                  Group = g.Key,
                  Categories = (cats from above query for this same g.Key group)???
              };
我可以用SQL很容易地做到这一点,但我在用LINQ。最后,我想列出每个
以及在上面的/main单个查询中加入的
cats
,理想情况下不需要在单独的查询中再次查询该数据


非常感谢

我不确定我是否理解正确,但我认为这就是您所需要的:而不是
按组分组
执行
按组分组猫
,然后
键将是
,组的值将是所有匹配的类别

var results = from species in db.Species
              join cats in db.Categories on species.CategoryId equals cats.CategoryId
              join groups in db.Groups on cats.GroupId equals groups.GroupId
              group cats by groups into g
              select new GroupWithCategoryChildren
              {
                  Group = g.Key,
                  Categories = g.ToList()
              };
我用这个来测试它:

List<dynamic> Species = new List<dynamic>()
{
    new { A = "1", CategoryId = 1 },
    new { A = "2", CategoryId = 2 },
};

List<dynamic> Categories = new List<dynamic>
{
    new { B = "1", CategoryId = 1, GroupId = 1 },
    new { B = "2", CategoryId = 2, GroupId = 1 },
};

List<dynamic> Groups = new List<dynamic>
{
    new { C = "1", GroupId = 1 }
};

//result: { Group: { C = "1", GroupId = 1 }, Categories (1,2)}
List Species=新列表()
{
新的{A=“1”,类别ID=1},
新的{A=“2”,类别ID=2},
};
列表类别=新列表
{
新的{B=“1”,CategoryId=1,GroupId=1},
新的{B=“2”,CategoryId=2,GroupId=1},
};
列表组=新列表
{
新的{C=“1”,GroupId=1}
};
//结果:{Group:{C=“1”,GroupId=1},Categories(1,2)}

您可以发布您将如何在SQL中执行此操作吗?这将告诉我们您需要什么,LINQ专家可以很容易地为您翻译。您可以在LINQ中使用子查询,但正如Shannon提到的,如果看不到您的SQL或所有这些表如何相互关联,就无法回答您的问题。抱歉,各位,我意识到我没有在原来的问题中提供最好的解释。嗨,吉拉德,非常感谢。是的,这正是我需要的。我最终实现了一个稍微不同的版本(因为我还需要进一步深入第二层),但它正是基于上面所示的示例解决方案。非常感谢你的帮助。