Linq查询:加入层次结构的第二级

时间:2013-10-15 03:17:30

标签: vb.net linq entity-framework

我需要比较两个相同结构的对象。

每种类型都包含其他类型的集合。

ProcessA - > ChildrenA(链接)

ProcessB - > ChildrenB(链接)

如何使用LINQ查询这两个对象。 并说:

  

ProcessA 集合childrenA 中的哪些项目存在于    ProcessB 集合ChildrenB

基本上是 层次结构 第二级的加入。 我似乎无法在 VB.NET

中找到使用Linq加入它们的方法

提前谢谢!

干杯

1 个答案:

答案 0 :(得分:0)

你到底想要达到什么目的?如果你只想在processB中存在的processA的子节点你不需要连接,你可以这样写:

var Matches = ProcessA.ChildrenA.Where(a=>ProcessB.ChildrenB.Any(b=>b==a));

更新:对于实体框架(不要用linq对象执行此操作,会非常慢!但是这会被转换为好的SQL)

var q = from a in ProcessA.ChildrenA
    from b in ProcessB.ChildrenB
    where a.Name == b.Name
    select new {a,b}