2010-01-14 105 views
2

我想結合兩個字符串列表項,但不希望重複項結合項目兩個列表

List<string> l1 = new List<string>() { "A", "B", "C", "D"}; 
List<string> l2 = new List<string>() { "B", "E", "G", "D"}; 

結果:A,B,C,d,E,G

我怎麼能做到這一點?

回答

5

使用UnionDistinct運營商:

var newList = l1.Union(l2).Distinct().ToList(); 
1

這應該工作。不像上述答案那麼優雅。

 List<string> l1 = new List<string>() { "A", "B", "C", "D" }; 
     List<string> l2 = new List<string>() { "B", "E", "G", "D" }; 

     l1.Concat(l2); 
     IEnumerable<string> noDupes = l1.Distinct(); 
4

您可以使用LINQ產生兩個列表的工會:

var combined = l1.Union(l2); 
+1

它不會,因爲它被定義爲並集。從MSDN文檔:'此方法從返回集中排除重複項。這與Concat <(Of <(TSource>)>)方法不同,它返回輸入序列中的所有元素,包括重複項。 – 2010-01-14 13:41:12

0

C#2.0版本

Dictionary<string,string> dict = new Dictionary<string,string>(); 
l1.AddRange(l2); 
foreach(string s in l1) dict[s] = s; 
List<string> result = new List<string>(dict.Values);