2011-07-21 87 views
-1

可能重複:
comparing two List<>合併兩個列表<T>和比較

emp_db_snapshot - 從數據庫什麼的用戶在過去已經選擇的新副本加載:

emp_selected_by_user - 用戶選擇的列表,用戶可以改變已經選擇的或者可以添加更多列表,可以從列表中刪除:

//let say i have two rows in the list. 
List<Employee> emp_db_snapshot = new List<Employee>(); 
emp_db_snapshot = EmployeeListFromDB ; //loads the list from db 

//let say i have two rows in the list. 
List<Employee> emp_selected_by_user = new List<Employee>(); 
emp_selected_by_user = MySelectedEmployee //loads the list selected by user. 


//merging the two lists: 
//got total of 4 rows. 
List<Employee> allEmployee = emp_db_snapshot.Union(emp_selected_by_user).ToList(); 

所以我的問題是:

我怎樣才能區分或比較?

+1

我不確定您在區分方面尋找什麼。你想排除重複嗎?或者可能找出哪兩個列表中存在哪些? –

+0

@Brian:聽起來像他希望能夠檢查結果列表allEmployee,並確定每個項目的來源 - 數據庫或由用戶選擇。 – Yuck

+0

請不要問同樣的問題,而不是跟隨你的初始問題。 – R0MANARMY

回答

1

我會試圖回答這個問題。

如果每個集合碰巧擁有某些相同的數據,則可以對這些集合之間的差異進行收集。

var DifferencesList = ListA.Where(x => !ListB.Any(x1 => x1.id == x.id)).Union(ListB.Where(x => !ListA.Any(x1 => x1.id == x.id))); 

你可以在那裏找到集合之間的交集並將結果合併到差異列表中。這將允許您擁有一個包含所有數據只出現一次的集合。

+0

它沒有給我我想要的...我有一個兩個列表每個列表可能會不同或相同,所以我想要的是一個匹配列表和一個不匹配列表的列表 –

+0

@Abu Hamzah - 我只是告訴你如何做到這一點。我發佈的代碼會列出你的聯盟的差異。您還必須使用交叉點來查找兩個共有的集合。剩下的事情由你來決定。我拒絕簡單地給你全部答案。 –