如何将收藏范围添加​​到其他收藏?

时间:2014-09-22 19:10:31

标签: c# linq

我正在尝试列出唯一条目。 我有两个列表,但我想在检查是否已有任何条目后最终得到一个。我怎么能用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());
}

3 个答案:

答案 0 :(得分:4)

您可以使用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();

答案 1 :(得分:1)

使用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();

这将输出

apple
banana
cat
dog
ear

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

答案 2 :(得分:0)

要获得这些物品你可以试试这个:

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" };