【问题标题】:linq joins list for eacn itemlinq 加入 eacn 项目的列表
【发布时间】:2017-12-30 01:51:45
【问题描述】:

我有 3 个集合:团队、路线、航路点

团队可能有很多路线,路线可能有很多航点

我要采集队伍,队伍的每一项都必须有采集路线,每条路线都必须有采集路点。

我知道如何处理两个集合。 这是我的查询

var waypoints = from team in teams
                join route in Routes on team.TeamID equals route.TeamID
                into rList
                select new { teamName= team.teamName, Rlist = rList};
foreach (var t in waypoints)
{
    Console.WriteLine("<{0} team>:", t.teamName);
    foreach (var m in t.Rlist)
        Console.WriteLine(" " + m.RouteName);
    Console.WriteLine();
}

如何连接第三个加入 WayPoints ?

我想得到这样的结果

{   
    team_1-> route_1->waypoint_1
                      waypoint_3
                      waypoint_5
    team_2-> route_2->waypoint_4      
                      waypoint_5    
                      waypoint_9       
    team_4-> route_5->waypoint_5
                      waypoint_7
                      waypoint_8
}

【问题讨论】:

  • 这看起来像是复制粘贴的代码,没有任何意义
  • stackoverflow.com/help/mcve 如果您能给我们一个完整的代码示例(包括代码中的示例输入,以及明确定义的预期输出),我们可以更好地帮助您。
  • 如果您在 EF 中正确设置了外键关系,那么您可以使用导航属性而不是连接 coding.abel.nu/2012/06/dont-use-linqs-join-navigate
  • 你的图片没有表达一个有效的 C# 对象 - 如果你正确表达了你的对象,(尝试一个类定义)我认为它会帮助你理解。

标签: c# linq


【解决方案1】:

您需要嵌套 LINQ 以生成所需的答案:

var waypoints = from team in teams
                join route in Routes on team.TeamID equals route.TeamID into rList
                select new {
                    team.teamName,
                    Rlist = (from route in rList
                             join waypoint in WayPoints on route.RouteID equals waypoint.RouteRouteID into wList
                             select new {
                                 route,
                                 Wlist = wList.ToList()
                             }).ToList()

};

【讨论】:

  • 非常感谢!这就是我想了解我可以在何处以及如何使用第三个连接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-24
  • 2011-10-08
相关资源
最近更新 更多