Tôi đã thảo luận vấn đề này với các đồng nghiệp và chúng tôi không thể tìm ra cách sử dụng .Any
cho bất kỳ mục đích nào List<>
, trong C #.
Bạn có thể kiểm tra tính hợp lệ của một phần tử trong mảng như câu lệnh sau:
if (MyList.Any()){ ...} //Returns true or false
Mà giống hệt như
if (MyList.Count() != 0) { ... }
và là phổ biến hơn nhiều, có thể đọc và rõ ràng về ý định của if
tuyên bố.
Cuối cùng, chúng tôi bị mắc kẹt với suy nghĩ này:
.Any()
có thể được sử dụng, sẽ hoạt động tốt, nhưng không rõ ràng về ý định của lập trình viên, và trường hợp đó không nên sử dụng.
Nhưng chúng tôi cảm thấy như thế này không thể đúng; chúng ta phải thiếu một cái gì đó
Có phải chúng ta không?
Any()
chưa rõ ràng: Any()
dường như rõ ràng hơn đối với tôi, đặc biệt là với tình trạng lambda. Dịch mã sang tiếng Anh trong đầu tôi, if(MyList.Count(o => o > 10) > 0)
trở thành "Số lượng vật phẩm có lớn hơn 10 hơn 0 không?" trong khi if(MyList.Any(o => o > 10))
trở thành "Có mục nào lớn hơn 10 không?"
Any
là Exists
. Tên Linq có lẽ được lấy cảm hứng nhiều hơn bởi Haskell và Python cũng có bất kỳ / tất cả các chức năng.