2012-08-13 17 views
1

我有一個對象列表,其中每個對象都包含一個內部對象列表,而我要獲取的是父列表(左列表),但是我不得不使用SelectMany函數。它可能嗎?Linq - 在SelectMany後檢索第一個列表

簡單的例子:

var query = objList.SelectMany(p => p.InternalList) 
        .Where(internalObj => internalObj.SomeProprerty == true) 
        .SELECT(objList); 

有沒有辦法做到這一點?

回答

3

假設你沒有實際上objList,而是我們正在尋找當時的objList元素,我覺得你只是想:

var query = objList.SelectMany(p => p.InternalList, (o, p) => new { o, p }) 
        .Where(pair => pair.p.SomeProperty) 
        .Select(pair => pair.o); 

如果這不是你」之後,如果你舉一個具體的例子,這真的會有所幫助。

編輯:如果您只想objList任何例子,其中內部列表的任一元素的true一個SomeProperty值,你可以這樣做更容易這樣的:

var value = objList.FirstOrDefault(o => o.InternalList.Any(p => p.SomeProperty)); 
if (value != null) 
{ 
    ... 
} 
+0

我需要檢索對象,其中internalList的只有一個元素包含其值爲true的proprerty。 – bit 2012-08-13 16:15:27

+0

@bit:我給你的代碼會給你所有這些,可能有重複。但是有一個更好的方法來做 - 編輯。 – 2012-08-13 16:20:12

+0

等待你的新編輯,我試過你的第一個解決方案,但是編譯時間錯誤{o,p} =>很糟糕。 – bit 2012-08-13 17:04:46