如何将集合的范围添加到其他集合

本文关键字:集合 添加 其他 范围 | 更新日期: 2023-09-27 18:23:53

我正在尝试创建一个唯一条目列表。我有两个列表,但我想在检查是否已经有条目后,最终得到一个。我怎么能用Linq实现这一点?

//Is a list with Activity, which have an ID property
public static List<Activity> Activites = new List<Activity>();
//Is only a list of string IDs
List<string> l = FileManagement.GetFileContent_List(WALLFILE);
foreach(Activity a in Activites) 
{
    if (!l.Contains(a.ID.ToString())) l.Add(a.ID.ToString());
}

如何将集合的范围添加到其他集合

您可以使用Union方法连接所有ID并且不重复:

l = l.Union(Activities.Select(a => a.ID.ToString()).ToList();

或者直接:

var l = FileManagement.GetFileContent_List(WALLFILE)
       .Union(Activities.Select(a => a.ID.ToString()).ToList();

使用Union将把列表合并在一起,并且不会重复值。例如:

List<string> list1 = new List<string>()
{
    "apple",
    "banana",
    "cat"
};
List<string> list2 = new List<string>()
{
    "dog",
    "cat", //extra
    "ear"
};
var combined = list1.Union(list2).ToList();

这将输出

苹果香蕉猫狗耳朵

您将需要某种方法将"活动"与l中的字符串进行比较。

要获得项目,您可以尝试以下操作:

var listA = new List<string> {"a", "b", "c", "a"};
var listB = new List<string>();
listB.AddRange(listA
   .Where(listAItem => listAItem != listB.Find(listBItem => listBItem == listAItem)));

这将返回listB { "a", "b", "c" };