2010-09-16 132 views
1

讓我解釋一下使用此代碼示例:查找對象列表中選擇特定對象LINQ查詢

var commands1 = new List<int> { 1 }; 
var lessons = new List<lesson> 
{ 
    new lesson 
    { 
     hours = new List<hour> 
     { 
     new hour { period = 1 } 
     } 
    } 
}; 
List<command> commands2 
{ 
    get 
    { 
     return (
     from o in commands1 
     select new command 
     { 
      hour = ????; 
     } 
    ).ToList(); 
    } 
} 

和到位的????的。我需要獲得hour對象,其中period對應於o。通常我會通過lessons循環,然後通過hours循環檢查hour.period,但我不知道如何在LINQ查詢中這樣做。

我希望這已經夠清楚了(並且我正確地解釋了代碼)。

+0

我使用Google翻譯將您的荷蘭語標識符翻譯爲英語。我希望我說得對。 – dtb 2010-09-16 20:08:17

+0

謝謝。我簡化了代碼,實際上我從XML中獲得了教訓和命令1。 – 2010-09-16 20:36:28

回答

3
hour = lessons.SelectMany(l => l.hours).Where(h => h.period == o); 
+1

也許'Single'而不是'Where'? – dtb 2010-09-16 20:03:45

+3

注意,這並不提供特定的對象,而是提供符合給定條件的對象的'IEnumerable '。如果只有一個對象,使用'.Single()'。如果多個可以存在並且只需要一個,請使用'.First()'。如果可能性不存在並且沒有問題,則可以使用'SingleOrDefault()'(對於0到1)或'FirstOrDefault()'(對於0來說有很多可能性)。 – 2010-09-16 20:04:30

+0

謝謝大家!我用你的建議,但與Single(),現在它的工作。應該總是有一個對象,如果沒有,我會拋出一個錯誤。 – 2010-09-16 20:34:10