2014-09-22 42 views
0

我正在嘗試列出唯一條目。 我有兩個列表,但我想在檢查是否有任何條目已經在它之後結束。我怎麼能認識到這與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()); 
} 
+1

'AddRange',除非你需要一些更多的限制。同樣看看「Except」。 – gunr2171 2014-09-22 19:12:41

回答

4

您可以使用聯盟方法來連接所有的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

使用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比較字符串。

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