2013-10-15 48 views
0

我需要比較兩個具有相同結構的對象。Linq查詢:加入層次結構的第二級

每種類型都包含其他類型的集合。

ProcessA - > ChildrenA(鏈接)

進程B - > ChildrenB(鏈接)

我怎樣才能查詢使用LINQ這兩個對象。 說:

什麼收集childrenA的項目ProcessA,存在於 的收集ChildrenB進程B

基本上聯接在此層次一個二級。 我似乎無法找到一種方法來加入他們使用Linq在VB.NET

先謝謝您!

乾杯

回答

0

你究竟想要達到什麼目的?如果你只是想processA的孩子也存在於進程B你不需要加入,你會寫是這樣的:

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} 
+0

我試圖確定什麼childrenA在ChildrenB集合存在。使用實體框架上下文和Linq。 「加入」條件將由ChildrenA.Name = ChildrenB.Name – DataAnalyst1

+0

你應該已經指定它是針對實體的linq(沒有實體/ sql標籤,它被認爲是對象的linq),更新我的答案 –

+0

感謝隊友,我會測試它。我是EF和Code第一和Linq的新手。順便說一下,這些實體是先使用Code生成的。我正在努力包括孩子們。當我說「ProcesA」時。沒有兒童收藏。所以我找出了替代方案。我會在一分鐘內回覆你。感謝你的幫助! – DataAnalyst1