2011-07-21 43 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 - 我只是告诉你如何做到这一点。我发布的代码会列出你的联盟的差异。您还必须使用交叉点来查找两个共有的集合。剩下的事情由你来决定。我拒绝简单地给你全部答案。 –