Tôi biết LINQ có phương thức SequenceEquals
. Phương thức này đảm bảo mỗi giá trị mục trong mỗi bộ sưu tập phù hợp, theo cùng thứ tự.Có phương pháp tương đương LINQ không?
Điều tôi đang tìm kiếm là một loại chức năng "Tương đương" hơn. Chỉ cần cả hai dãy chứa cùng một mục, không nhất thiết phải theo thứ tự như nhau. Ví dụ: nUnit có CollectionAssert.AreEqual()
và CollectionAssert.AreEquivalent()
làm những gì tôi đang giải thích.
Tôi biết rằng tôi có thể làm điều này bằng cách:
- đặt hàng danh sách trước thời hạn và sử dụng
SequenceEquals
- Sử dụng
Intersect
, sau đó nhìn thấy nếu ngã tư bằng với chuỗi gốc.
Ví dụ:
var source = new[] {5, 6, 7};
source.Intersect(new[] {5, 7, 6}).Count() == source.Length;
Có một sai lầm trong ví dụ của câu trả lời. Bạn cần phải so sánh nó với cả hai tính nếu không thì hàm của bạn sẽ trả về 'true' khi nguồn là một tập con của đích. I E. nguồn {5,6} và mục tiêu {5,7,6} – cellik