Trả lời
Không có gì để sửa ở đây. Any()
sẽ lặp lại liệt kê nhưng dừng sau phần tử đầu tiên (sau đó nó trả về true).
Nhiều enumerations chủ yếu là một vấn đề trong hai trường hợp:
Hiệu suất: Nói chung, bạn muốn tránh nhiều lần lặp lại nếu bạn có thể, bởi vì nó là chậm hơn. Điều này không áp dụng ở đây vì
Any()
sẽ chỉ xác nhận có ít nhất một phần tử và là séc bắt buộc cho bạn. Ngoài ra, bạn không truy cập bất kỳ tài nguyên từ xa/bên ngoài nào, chỉ cần một chuỗi trong bộ nhớ.Các danh sách không thể lặp lại nhiều lần: Ví dụ: nhận các mục từ mạng, v.v. - cũng không áp dụng tại đây.
Là một phiên bản không LINQ rằng chỉ cần lặp khi bạn thể làm như sau:
bool foundAny= false;
bool isEqual = true;
if(f == null)
throw new ArgumentException();
foreach(var check in f)
{
foundAny = true;
isEqual = isEqual && check(p,p2);
}
if(!foundAny)
throw new ArgumentException();
return isEqual;
Nhưng, như đã nói, trong trường hợp của bạn nó không tạo sự khác biệt, và tôi sẽ đi với phiên bản dễ đọc hơn cho bạn.
Nếu đây là truy vấn cơ sở dữ liệu, nó sẽ thực hiện hai lần, thường là hoàn toàn. – usr
@usr: Đồng ý, tôi đã thêm vào trường hợp đầu tiên - nó tạo sự khác biệt trong trường hợp này cho dù đó là tài nguyên từ xa/bên ngoài hay chuỗi trong bộ nhớ – BrokenGlass
Phương pháp Any
có thể gây ra việc liệt kê IEnumerable<T>
, nếu không có cách nào khác để xác định kết quả. Trong một số trường hợp, nó có thể là một vấn đề, ví dụ nếu trường hợp IEnumerable<T>
thực sự là một IQueryable<T>
, điều này sẽ làm cho truy vấn cơ sở dữ liệu hoặc cuộc gọi dịch vụ web được thực hiện. Bây giờ, nếu nó chỉ là một bộ sưu tập trong bộ nhớ, nó không thực sự là một vấn đề, bởi vì liệt kê các bộ sưu tập sẽ không có tác dụng phụ đáng chú ý. Và dù sao, Any
sẽ sử dụng thuộc tính Count
nếu trình tự thực hiện ICollection<T>
, do đó, nó sẽ không gây ra điều tra.
- 1. liệt kê nhiều phiên bản trên pypi
- 2. Liệt kê các giá trị có thể đặt trong Delphi
- 3. Bạn có thể sử dụng lại các bộ sưu tập IEnumerable nhiều lần không?
- 4. Tổng số đếm liệt kê có thể đếm được do điều kiện tiên quyết hợp đồng
- 5. Quá nhiều phông chữ khi liệt kê bằng hàm EnumFontFamiliesEx
- 6. Liệt kê nhóm yum
- 7. String để liệt kê
- 8. Liệt kê nội dung của nhiều tệp jar
- 9. Liệu Perl có một kiểu liệt kê?
- 10. Số ít hoặc số nhiều cho bảng liệt kê?
- 11. Kiểm tra xem IEnumerable có BẤT CỨ hàng nào mà không liệt kê toàn bộ danh sách
- 12. Java Array Liệt kê Issue
- 13. Liệt kê tất cả virtualenv
- 14. Scala liệt kê để int
- 15. Có hợp lệ để liệt kê nhiều trường trong một tiêu đề Vary không?
- 16. Thẩm định một danh sách liệt kê trong Moq
- 17. Liệt kê các hàng sau ngày cụ thể
- 18. liệt kê các ổ cắm đa hướng
- 19. Liệt kê các phông chữ có sẵn trong PHP
- 20. Cách liệt kê các tab trong vim?
- 21. Không thể tìm thấy định nghĩa mặc dù intellisense liệt kê nó?
- 22. Liệt kê ShortCigned được gán trong Excel
- 23. Liệt kê tất cả các hành động có thể có trên bảng 4x4 trong Prolog
- 24. Tôi có thể liệt kê các thuật toán mã hóa có sẵn như thế nào?
- 25. Android liệt kê tất cả hình ảnh có sẵn
- 26. Chuỗi để liệt kê mà không có # \ chung lisp
- 27. Liệt kê tất cả các hội đồng .NET có sẵn
- 28. Chuyển báo cáo có liệt kê mạnh mẽ
- 29. git liệt kê tất cả các lệnh có sẵn
- 30. KCFinder 'Bạn không có quyền liệt kê các tệp.'
Tất cả trừ ảnh chụp màn hình cuối cùng và văn bản chỉ phân tâm từ câu hỏi thực. – usr
Điều này rất giống với http://stackoverflow.com/q/7244178/219583. Bất kỳ() nào sẽ được tính là một liệt kê và Tổng hợp() là số thứ hai. –
Không đăng mã dưới dạng ảnh chụp màn hình - dán nguồn vào câu hỏi. – Joe