Câu hỏi nhanh, cách thích hợp nhất để lập trình hỏi là "Có chính xác một phần tử trong chuỗi này thỏa mãn điều kiện X không?" sử dụng LINQ?Cách hỏi "Có chính xác một yếu tố đáp ứng điều kiện" trong LINQ không?
ví dụ:
// Pretend that the .OneAndOnlyOne() method exists
int[] sequence = new int[] { 1, 1, 2, 3, 5, 8 };
Assert.IsTrue(sequence.OneAndOnlyOne(x => x == 2);
Assert.IsFalse(sequence.OneAndOnlyOne(x => x == 1);
một cái gì đó như thế này có thể được thực hiện với:
sequence.SingleOrDefault(x => x == 2) != null;
nhưng đó là một chút vụng về.
Tôi cho rằng tôi có thể cuộn phương thức tiện ích của riêng mình, nhưng điều này có vẻ là một mẫu chung trong mã của tôi và tôi muốn đảm bảo có cách làm sạch tốt. Có cách nào sử dụng các phương pháp LINQ tích hợp không?
'SingleOrDefault' sẽ ném một InvalidOperationException : nếu có nhiều hơn một trận đấu. – SLaks
Tôi khuyên bạn nên sử dụng IsLone() làm tên thay thế cho phương pháp mở rộng. Bạn cũng đang làm 2 việc với cùng chức năng, lọc và sau đó phát hiện nếu chỉ có 1 phần tử. Tôi sẽ làm: sequence.Where (x => x == 2) .IsLone() – ICR