2012-05-17 56 views
5

Tôi có hai HashSets như thế này:So sánh hai băm?

HashSet<string> log1 = new HashSet<string>(File.ReadLines("log1.txt")); 
HashSet<string> log2 = searcher(term); 

Làm thế nào tôi sẽ so sánh hai?

Tôi muốn đảm bảo rằng log2 không chứa bất kỳ mục nhập nào từ log1. Nói cách khác, tôi muốn xóa tất cả (nếu có), các mục mà log1 có bên trong log2.

+0

Bước qua từng phần tử trong log1 và so sánh chúng với từng phần tử trong log2, đó là cách tôi sẽ thực hiện. Mặc dù tôi không chắc chắn làm thế nào bạn sẽ truy cập vào các yếu tố cá nhân. Tôi đoán bạn có thể có thể xây dựng một foreach (string s trong log1) cho nó? Lưu ý: Tôi chưa bao giờ sử dụng loại HashSet, và tôi đoán số –

Trả lời

7

Sử dụng LINQ:

log1.Intersect(log2).Any() 

Xem IntersectExcept trên MSDN.

+0

() hoặc bất kỳ() ....? –

+0

@RoyiNamir - 'Any()' là tốt hơn. – Oded

+0

@RoyiNamir Nếu bạn cần kiểm tra xem có bất kỳ đồng xu nào trong một cái bình bạn không phải đếm, thay vào đó bạn kiểm tra xem có tồn tại không? – Sandeep

1

Bạn đã xem hàm ExceptWith chưa?

Xóa tất cả các phần tử trong bộ sưu tập được chỉ định khỏi đối tượng HashSet hiện tại.