什麼是採取列表2並將其添加到列表1結束一個簡單有效的方法 - 但只有那些項目是不已經列表1方式在連接之前 - 將被添加到它?C#:連接兩個列表不重複
編輯: 我一直在嘗試方法建議在這裏的答案,但我仍然得到愚蠢添加到List1!
這是一個代碼示例:
// Assume the existence of a class definition for 'TheObject' which contains some
// strings and some numbers.
string[] keywords = {"another", "another", "another"};
List<TheObject> tempList = new List<TheObject>();
List<TheObject> globalList = new List<TheObject>();
foreach (string keyword in keywords)
{
tempList = // code that returns a list of relevant TheObject(s) according to
// this iteration's keyword.
globalList = globalList.Union<TheObject>(tempList).ToList();
}
當調試 - 在第二次迭代之後 - globalList包含TheObject的完全相同的對象的兩個副本。同樣的事情也發生了,當我嘗試實施愛德華·佈雷的解決方案......
EDIT2:
我修改,返回一個新tempList的代碼,同時檢查是否返回的項目已經在globalList(由正在做!globalList.contains()) - 它現在起作用。
雖然,這是一個變通......
確實TheObject具有的Equals重寫?否則,默認值是引用相等,如果每次新創建tempList的項目,這將不起作用。 – 2012-04-16 05:17:38
這是一個由Linq自動生成的從數據庫表中的SQL的類。我查看了定義,並沒有看到任何Equals覆蓋。我應該創建一個嗎?一個需要兩個對象實例並比較它們的每個屬性? – 2012-04-16 05:27:01
或者我可以以某種方式將'通過引用平等'的默認值更改爲'按值'? – 2012-04-16 05:29:13