Chọn các yếu tố bạn làm muốn chứ không phải cố gắng để loại bỏ các yếu tố mà bạn không muốn. Điều này dễ dàng hơn nhiều (và nói chung cũng hiệu quả hơn) so với việc loại bỏ các yếu tố.
var newSequence = (from el in list
where el.Something || el.AnotherThing < 0
select el);
Tôi muốn đăng bài này dưới dạng một bình luận để đáp lại bình luận mà Michael Dillon để lại bên dưới, nhưng nó quá dài và có lẽ hữu ích trong câu trả lời của tôi.
Cá nhân, tôi sẽ không bao giờ xóa từng mục một, nếu bạn cần loại bỏ, sau đó gọi RemoveAll
đó là một vị từ và chỉ sắp xếp lại mảng bên trong một lần, trong khi Remove
thực hiện Array.Copy
thao tác cho mọi phần tử bạn xóa. RemoveAll
là hiệu quả hơn nhiều.
Và khi bạn quay ngược lại một danh sách, bạn đã có chỉ mục của phần tử bạn muốn xóa, vì vậy sẽ hiệu quả hơn rất nhiều khi gọi RemoveAt
, vì Remove
trước tiên hãy duyệt qua danh sách để tìm chỉ mục của phần tử bạn Tôi đang cố xóa, nhưng bạn đã biết chỉ số đó.
Vì vậy, tất cả, tôi không thấy bất kỳ lý do nào để gọi Remove
một vòng lặp for. Và lý tưởng nhất là nếu có thể, hãy sử dụng đoạn mã trên để truyền các phần tử từ danh sách khi cần để không có cấu trúc dữ liệu thứ hai nào được tạo ra.