2009-04-29 35 views
2

我很新的LINQ和我有麻煩轉換後面的LINQ表達式:LINQ的子名單問題

 Dim returnedInstructions As List(Of Integer) = New List(Of Integer) 
     For Each j As Job In response.Jobs 
      For Each i As Instruction In j.Instructions 
       returnedInstructions.Add(i.InstructionId) 
      Next 
     Next 

任何幫助表示讚賞。

回答

0

你想SelectMany

​​

(現在在VB中,我不知道這是否編譯)

Dim returnedInstructions = response.Jobs _ 
    .SelectMany(Function(j) j.Instructions _ 
    .Select(Function(i) i.InstructionID)) _ 
    .ToList() 
2

我對VB並不太熟悉,所以如果這與C#語法有些混淆,請致歉。

returnedInstructions = 
(from j in response.Jobs _ 
from i in j.Instructions _ 
select i.InstructionId).ToList(); 
+0

我以前試過這個確切的例子,但它返回IEnumberable >而不是IEnumberable 。 – Owen 2009-04-29 12:46:11

+1

你確定這是*完全*你試過了嗎?雙從應該轉化爲SelectMany的調用(按照David的回答) - ToList將返回列表而不是IEnumerable 2009-04-29 13:00:07

0

像這樣的東西應該工作:

Dim returnedInstructions As New List(Of Integer) 
    Dim q = From j In response.Jobs, i In j.Instructions Select i.InstructionID 
    returnedInstructions.AddRange(q)