2009-04-03 15 views
18
List<int> a = 1,2,3 
List<int> b = 2,4,5 

output 
1,3,4,5 
+0

có nên 3 cũng có trong đầu ra? – Dave

+0

Tôi đoán có ... đó sẽ là dữ liệu không giao nhau. –

+0

Điều này có một câu trả lời tốt hơn ở đây https://stackoverflow.com/questions/5620266/the-opposite-of-intersect – Amicable

Trả lời

37

Bí quyết là sử dụng Except với giao điểm của hai danh sách.

này nên cung cấp cho bạn danh sách các yếu tố không giao nhau:

var nonIntersecting = a.Union(b).Except(a.Intersect(b)); 
4

Cố gắng và thử nghiệm:

List<int> a = new List<int>(){1, 2, 3}; 
List<int> b = new List<int>(){2, 4, 5}; 


List<int> c = a.Except(b).Union(b.Except(a)).ToList(); 
+0

tôi muốn tìm phần không giao nhau –

+0

Tôi đã cập nhật câu trả lời của mình. –

+0

Câu trả lời của Reed Copsey là câu trả lời hay nhất! –

-1

Một cách khác:

List<int> a = new List<int> { 1, 2, 3 }; 
List<int> b = new List<int> { 2, 4, 5 }; 
var nonIntersecting = a.Union(b) 
    .Where(x => !a.Contains(x) || !b.Contains(x)); 
+0

đây là o (n^3) ........................................ –

Các vấn đề liên quan