C# 如果项目不在数组列表中,则将项目添加到数组列表中
C# Adding a item into an arraylist if the item is not already inside that arraylist
假设我有两个列表,列表 1 和列表 2。列表 1 有字符串“ABCD”,列表 2 有与列表 1 相同的项目,但有一些附加项目“1A23C4D”,我想将它们组合起来它是一个包含所有可能值且不重复的列表。所以我希望 ABCD1234 在第三个列表中
这就是我的
ArrayList list1 = new ArrayList();
list1.Add("A");
list1.Add("B");
list1.Add("C");
list1.Add("D");
ArrayList list2 = new ArrayList();
list2.Add("1");
list2.Add("A");
list2.Add("2");
list2.Add("3");
list2.Add("C");
list2.Add("4");
list2.Add("D");
ArrayList list3 = new ArrayList();
foreach(var item in list1)
{
list3.Add(item);
}
foreach (var item in list1)
{
foreach (var item2 in list2)
{
//if the item2 is not at all in the first list add it to the 3rd list
}
}
Console.ReadLine();
我弄清楚这一点的原因是因为我在做其他事情,我从一个数组列表中的一个注册表项安装了所有软件,然后从另一个数组列表中安装了另一个注册表项的所有软件,我想要创建所有已安装软件的组合列表,这些软件不会重复显示。我看到除了 c# 以外的其他语言发布的与此类似的内容,所以我认为 id 要求 c#。谢谢
您不应该使用 ArrayList
,它是 .net framework 1.0(2002 年)中的一种陈旧数据结构。使用 List<T>
而不是 .net framework 2.0 及更高版本(2005 年)。
您可以使用 .net framework 3.5 及更高版本(2008 年)的 Linq 来构建包含不同项目的列表:
using System;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApp3
{
class Program
{
static void Main(string[] args)
{
var list1 = new List<string> { "A", "B", "C", "D" };
var list2 = new List<string> { "1", "A", "2", "3", "C", "4", "D" };
var list3 = list1.Concat(list2).Distinct().ToList();
foreach (var item in list3)
{
Console.WriteLine(item);
}
}
}
}
还有一些其他的选择。如果你只需要一个可枚举的,你可以使用下面的代码:
using System;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApp3
{
class Program
{
static void Main(string[] args)
{
var list1 = new List<string> { "A", "B", "C", "D" };
var list2 = new List<string> { "1", "A", "2", "3", "C", "4", "D" };
var distinctItems = list1.Concat(list2).Distinct();
foreach (var item in distinctItems)
{
Console.WriteLine(item);
}
}
}
}
如果你想要一个包含不同项目的数据结构,你可以使用 HashSet<string>
using System;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApp3
{
class Program
{
static void Main(string[] args)
{
var list1 = new List<string> { "A", "B", "C", "D" };
var list2 = new List<string> { "1", "A", "2", "3", "C", "4", "D" };
var distinctItems = new HashSet<string>(list1.Concat(list2));
foreach (var item in distinctItems)
{
Console.WriteLine(item);
}
}
}
}
假设我有两个列表,列表 1 和列表 2。列表 1 有字符串“ABCD”,列表 2 有与列表 1 相同的项目,但有一些附加项目“1A23C4D”,我想将它们组合起来它是一个包含所有可能值且不重复的列表。所以我希望 ABCD1234 在第三个列表中
这就是我的
ArrayList list1 = new ArrayList();
list1.Add("A");
list1.Add("B");
list1.Add("C");
list1.Add("D");
ArrayList list2 = new ArrayList();
list2.Add("1");
list2.Add("A");
list2.Add("2");
list2.Add("3");
list2.Add("C");
list2.Add("4");
list2.Add("D");
ArrayList list3 = new ArrayList();
foreach(var item in list1)
{
list3.Add(item);
}
foreach (var item in list1)
{
foreach (var item2 in list2)
{
//if the item2 is not at all in the first list add it to the 3rd list
}
}
Console.ReadLine();
我弄清楚这一点的原因是因为我在做其他事情,我从一个数组列表中的一个注册表项安装了所有软件,然后从另一个数组列表中安装了另一个注册表项的所有软件,我想要创建所有已安装软件的组合列表,这些软件不会重复显示。我看到除了 c# 以外的其他语言发布的与此类似的内容,所以我认为 id 要求 c#。谢谢
您不应该使用 ArrayList
,它是 .net framework 1.0(2002 年)中的一种陈旧数据结构。使用 List<T>
而不是 .net framework 2.0 及更高版本(2005 年)。
您可以使用 .net framework 3.5 及更高版本(2008 年)的 Linq 来构建包含不同项目的列表:
using System;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApp3
{
class Program
{
static void Main(string[] args)
{
var list1 = new List<string> { "A", "B", "C", "D" };
var list2 = new List<string> { "1", "A", "2", "3", "C", "4", "D" };
var list3 = list1.Concat(list2).Distinct().ToList();
foreach (var item in list3)
{
Console.WriteLine(item);
}
}
}
}
还有一些其他的选择。如果你只需要一个可枚举的,你可以使用下面的代码:
using System;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApp3
{
class Program
{
static void Main(string[] args)
{
var list1 = new List<string> { "A", "B", "C", "D" };
var list2 = new List<string> { "1", "A", "2", "3", "C", "4", "D" };
var distinctItems = list1.Concat(list2).Distinct();
foreach (var item in distinctItems)
{
Console.WriteLine(item);
}
}
}
}
如果你想要一个包含不同项目的数据结构,你可以使用 HashSet<string>
using System;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApp3
{
class Program
{
static void Main(string[] args)
{
var list1 = new List<string> { "A", "B", "C", "D" };
var list2 = new List<string> { "1", "A", "2", "3", "C", "4", "D" };
var distinctItems = new HashSet<string>(list1.Concat(list2));
foreach (var item in distinctItems)
{
Console.WriteLine(item);
}
}
}
}