2012-01-30 48 views
6

我有一個複雜對象的主列表。Linq Select主列表的子集

我有一個int id的列表,我需要從主列表中選擇相應的複雜對象。

這不起作用

MasterListofComplexObj.Where(u => MasterListofComplexObj.Select(i => i.Id).Contains(ChildListofIntIds)); 

任何幫助,將不勝感激。

+0

您是否收到錯誤?還是錯誤的結果?你能給一些輸入值和你期望的輸出嗎? – 2012-01-30 19:04:07

回答

20

這應該工作:

var results = MasterListofComplexObj.Where(u => ChildListofIntIds.Contains(u.Id)); 
+0

你在....感謝您的幫助。在我看來,這種邏輯是相反的,你把孩子列表看看是否包含你從肥大列表中選擇的標識。再次感謝 – jim 2012-01-30 19:09:43

+0

是的語法並不是你直覺上所期望的 - 但是因爲你正在逐一查看每個'ComplexObj',它確實有意義 – BrokenGlass 2012-01-30 19:26:26

1
var results = from obj in MasterListofComplexObj 
    where ChildListofIntIds.Contains(obj.Id) 
    select obj; 

這是一個IEnumerable。你可能想要.FirstOrDefault()它來獲得一個對象。

轉化爲 MasterListofComplexObj.Where(項目=> ChildListofIntIds.Contains(item.Id))

沒有,如果你想要對象本身和它的屬性不是一個必要的選擇。

1

尋找到會加入其他更普遍的事情:

var results = MasterList.Join(ChildList, (m => m.Id), (c => c), ((m,c) => m)); 

我相信,但不能與引文或備份實驗數據,即加入將快於何處 - >包含一塊。