2012-07-25 81 views
3

我有一個LINQ查詢是這樣的: 兩個列表通過實體框架的導航屬性鏈接(這兩個實體有許多一對多的關係)LINQ選擇新KeyValuePair <T,List<T2>>

我想轉換此:

var query = (from a in listA 
      from b in a.ListB 
      select new {T1=a, T2=b} 

爲了像這樣:

var query = (from a in listA 
      from b in a.ListB 
      select new KeyValuePair<T1,List<T2>>{ T1=a , T2=b}) 

第一查詢產生這樣的項的列表:{(A,X),(A,Y),(A,Z),( b,X )...}

第二個查詢的目的是將結果合併到具有自己列表的項目中。

結果是這樣的:

{(一,列出與物品X,Y,Z),(B,用列表項x)...}

我會很感激的幫助。謝謝!

回答

6

編輯:感謝Stijn糾正我的答案。

它看起來像a已經包含相關的b項目的清單,所以不會這項工作?

var query = (from a in listA 
      select new{ T1 = a, T2 = a.ListB }); 

您還可以將查詢轉換字典:

var asDictionary = query.ToDictionary(item => item.T1, item => item.T2); 
+0

哦,好點...我錯過了,這是'a.ListB'並不僅僅是'listB'。 :P – Ryan 2012-07-26 00:39:30

+0

@minitech我不得不看兩次代碼注意。希望這只是一個簡單的例子,並不負責發射導彈!另外需要注意的是,多個'from'語句通過每個組合,有點像嵌套的'foreach'語句。 – 2012-07-26 01:19:07

+0

這段代碼完全錯誤。對象初始化程序中的「T1」和「T2」是什麼?它應該是'Key'和'Value'。不過,這也行不通,因爲'Key'和'Value'是隻讀的。 – Stijn 2013-05-28 09:14:57

相關問題