2012-05-18 23 views
19

Ví dụ, tôi có hai mảng:Nhận mặt hàng khác nhau và phổ biến trong hai mảng với LINQ

var list1 = string[] {"1", "2", "3", "4", "5", "6"}; 
var list2 = string[] {"2", "3", "4"}; 

Những gì tôi đang cố gắng làm là -

  1. Nhận mặt hàng phổ biến từ list1list2 (ví dụ. { "2", "3", "4"})
  2. Nhận mặt hàng khác nhau list1list2 (ví dụ. { "1", "5", "6"})
0.123.

Vì vậy, tôi đã cố gắng với LINQ và -

var listDiff = list1.Except(list2); //This gets the desire result for different items 

Nhưng,

var listCommon = list1.Intersect(list2); //This doesn't give me desire result. Comes out as {"1", "5", "6", "2", "3", "4"}; 

Bất kỳ ý tưởng?

+1

Nó sẽ hoạt động. 'list1.Intersect (list2)' trả về "2", "3", "4". – nemesv

+0

Bạn đang thiếu 2 'mới' trong cú pháp của mình. Điều đó sẽ không biên dịch. Sử dụng: 'var list2 = new string [] {" 2 "," 3 "," 4 "};' –

+0

Ngớ ngẩn tôi. Trong thực tế, Intersect làm việc, chỉ cần một phần khác để xuất mảng vào hộp văn bản đã rối tung lên. Cảm ơn tất cả! –

Trả lời

21

Bằng cách nào đó bạn đã nhận được kết quả từ một nơi khác. (Có lẽ bạn đang viết ra nội dung của listDIff đầu tiên, và nghĩ rằng đó là từ listCommon.) Phương pháp Intersectkhông cung cấp cho bạn các mục mà tồn tại trong cả hai danh sách:

var list1 = new string[] {"1", "2", "3", "4", "5", "6"}; 
var list2 = new string[] {"2", "3", "4"}; 
var listCommon = list1.Intersect(list2); 
foreach (string s in listCommon) Console.WriteLine(s); 

Output:

2 
3 
4 
Các vấn đề liên quan