📜  c#如何仅将列表中尚未包含的项目添加到列表中(1)

📅  最后修改于: 2023-12-03 15:29:48.785000             🧑  作者: Mango

C#如何仅将列表中尚未包含的项目添加到列表中

在C#中,我们可以使用集合类来创建列表。当我们需要将新的项目添加到列表中时,我们可以使用Add方法。但是,如果列表中已经有了相同的项目,那么我们就会添加重复的项目。在本篇文章中,我们将介绍如何仅将列表中尚未包含的项目添加到列表中。

使用List和Distinct方法

我们可以使用List类来创建一个列表,并使用Distinct方法来过滤已经存在于列表中的项目。下面是代码示例:

List<string> mylist = new List<string>();
mylist.Add("apple");
mylist.Add("banana");
mylist.Add("orange");
mylist.Add("apple");

List<string> newlist = new List<string>();
newlist.Add("banana");
newlist.Add("cherry");
newlist.Add("date");

var result = newlist.Where(x => !mylist.Contains(x)).Distinct().ToList();

foreach (var item in result)
{
    mylist.Add(item);
    Console.WriteLine(item);
}

在上面的代码中,我们首先创建了一个名为mylist的列表,并向其中添加了4个项目:apple、banana、orange和apple。然后,我们创建了另一个名为newlist的列表,并向其中添加了3个项目:banana、cherry和date。

接下来,我们使用Where方法和Contains方法来查找newlist中与mylist中相同的项(不包括重复的项),最后使用Distinct方法对结果进行去重。最后,我们将结果添加到mylist中,并使用foreach循环在控制台中打印每个添加的项目。

运行上面的代码,你会发现输出结果为:cherry和date。

使用HashSet

除了使用List和Distinct方法之外,我们还可以使用HashSet来创建列表。和List不同的是,HashSet具有去重的功能,因此我们可以直接将需要添加的项目添加到HashSet中,并使用UnionWith方法将HashSet与另一个HashSet或List进行合并。下面是代码示例:

HashSet<string> mylist = new HashSet<string>();
mylist.Add("apple");
mylist.Add("banana");
mylist.Add("orange");
mylist.Add("apple");

HashSet<string> newlist = new HashSet<string>();
newlist.Add("banana");
newlist.Add("cherry");
newlist.Add("date");

var result = newlist.Except(mylist).ToList();

foreach (var item in result)
{
    mylist.Add(item);
    Console.WriteLine(item);
}

运行上面的代码,你会发现输出结果为:cherry和date。

在上面的代码中,我们首先使用HashSet类创建了mylist和newlist列表。我们将需要添加的项目添加到newlist中,并使用Except方法查找在newlist中存在,但是在mylist中不存在的项目。最后,我们将结果添加到mylist中,并使用foreach循环在控制台中打印每个添加的项目。

总结

通过本篇文章,你已经了解了如何仅将列表中尚未包含的项目添加到列表中。我们可以使用List和Distinct方法,或使用HashSet来实现这个功能。请根据自己的需求选择相应的方法。