LinqToSql - 从嵌套列表中获取不同ID的列表

时间:2009-07-07 20:55:29

标签: c# linq-to-sql

我在一个类中有一个属性,我需要遍历关系中所有可能的不同ID。

我属于公司的用户。公司有很多解决方案,每个解决方案都有很多“SolutionPortals”。我想要的是来自DB中“SolutionPortals”(SolutionPortal.PortalID)的所有不同“PortalIds”的列表。

我不能为我的生活得到这个单一的清单。我一直在说:

var solutionIds = from s in this.Company.Solutions.Select(s=>s.SolutionPortals)
                  select s.Select(sp=> sp.PortalID);

当然这是有道理的,因为有一个解决方案列表,带有SolutionPortals列表,但我需要将IDS选择到他们自己的列表中。

IEnumerable<IEnumerable<int>> // <-- Don't want this
IEnumerable<int> // <-- I want this

任何帮助都会非常感激。

感谢/

3 个答案:

答案 0 :(得分:3)

SelectMany是关键所在:

var solutionIds = this.Company
                      .Solutions
                      .SelectMany(s=>s.SolutionPortals)
                      .Select(sp => sp.PortalId)
                      .Distinct();

答案 1 :(得分:2)

你可能需要这样的东西:

var listOfIds = listOfSolutionPortals.SelectMany(sps => sps.Solutions)
                                     .Select(sp => sp.PortalId);

答案 2 :(得分:1)

这有效:

var solutionIds = (from s in this.Company.Solutions
                   .SelectMany(s => s.SolutionPortals)
                   select s.PortalID).Distinct();

谢谢Mehrdad!