This question already has answers here:
How to merge 2 List<T> and removing duplicate values from it in C#

(5 个回答)


3年前关闭。




获取 List2 并将其添加到 List1 的末尾的简单有效方法是什么 - 但在某种程度上,只有在串联之前 List1 中已经存在 而非 的项目才会被添加到其中?

编辑:
我一直在尝试此处的答案中建议的方法,但我仍然将欺骗添加到 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 的完全相同对象的两个副本。当我尝试实现 Edward Brey 的解决方案时,也会发生同样的事情......

EDIT2:
我修改了返回新 tempList 的代码,以检查返回的项目是否已经在 globalList 中(通过执行 !globalList.contains()) - 现在可以使用了。
虽然,这是一个解决方法......

最佳答案

List1.Union(list2)。更多例子转到http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b

关于C#:加入两个列表,排除重复项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10168671/

10-12 23:19