Câu trả lời ngắn:
results.RemoveAll(r => r.ID==2);
sẽ loại bỏ các mục với ID 2 trong results
(tại chỗ).
câu trả lời chi tiết:
Tôi nghĩ rằng đó là đơn giản để sử dụng .RemoveAll()
, bởi vì bạn có thể có một danh sách các ID mục mà bạn muốn loại bỏ - vui lòng xem ví dụ sau.
Nếu bạn có:
class myClass {
public int ID; public string FirstName; public string LastName;
}
và giao một số giá trị results
như sau:
var results=new List<myClass> {
new myClass() { ID=1, FirstName="Bill", LastName="Smith" },
new myClass() { ID=2, FirstName="John", LastName="Wilson" },
new myClass() { ID=3, FirstName="Doug", LastName="Berg" },
new myClass() { ID=4, FirstName="Bill", LastName="Wilson" },
};
Sau đó, bạn có thể xác định một danh sách các ID để loại bỏ:
var removeList = new List<int>() { 2, 3 };
Và chỉ cần sử dụng quyền này để xóa chúng:
results.RemoveAll(r => removeList.Any(a => a==r.ID));
Nó sẽ loại bỏ các mục 2 và 3 và giữ những vật dụng 1 và 4 - theo quy định của removeList
. Lưu ý rằng điều này xảy ra tại chỗ, do đó không cần phải có thêm bất kỳ yêu cầu nào khác.
Tất nhiên, bạn cũng có thể sử dụng nó vào các mặt hàng duy nhất như:
results.RemoveAll(r => r.ID==4);
nơi mà nó sẽ loại bỏ Bill với ID 4 trong ví dụ của chúng tôi.
DotNetFiddle: Run the demo
tốt, có thể 'var itemsToRemove = resultlist.Where (r => r.Id == 2); foreach (var itemToRemove trong ItemsToRemove) resultList.Remove (itemToRemove); ' – Vlad
Không nên là' resultlist.Items.RemoveAt (1); '? – Obsidian