2013-04-02 22 views
0

說我有用於創建對象列表的字符串列表。檢查字符串列表中是否有任何項目不在對象列表中

我的字符串列表中有171個項目,而我的對象列表有170個。所以有一個沒有通過,但我需要弄清楚哪一個。

幸運的是,所有字符串都可以在每個對象的每個名稱中找到。這意味着,例如:

string nameObjOne 

威爾等於這個:

public class myObj 
{ 
    public string myName {get;set;} 
} 

所以,我怎麼能檢查,如果在我的第一個列表中的所有字符串都位於對象的列表,以便我可以找出哪一個不在那裏?

回答

4

您可以選擇在List<string>但沒有使用List<myObj>相應的項目LINQ項目:

var results = strings.Except(myObjects.Select(o => o.myName)).ToArray(); 

之後,你可以檢查results數組的長度來確定,如果有這樣一個項目。

它是O(n + m)解決方案,因爲Except的實現,它使用HastSet

+0

這不是O(n * m)嗎? –

+0

另請注意,OP還需要對象,而不僅僅是'字符串' –

+0

嗯,這工作完美,給了我想要的物品。壞項目!謝謝。 – hsim

相關問題