tôi có như sau:Có thể sửa đổi Danh sách trong khi lặp qua danh sách không?
foreach (var depthCard in depthCards)
{
var card = InternalGetCard(db, depthCard.CardId);
var set = InternalGetSet(db, (int)card.ParentSetId);
var depthArray = InternalGetDepthArrayForCard(db, set.SetId);
foreach (var cardToUpdate in set.Cards)
{
// do stuff
SaveChanges(db);
depthCards.Remove(depthCardToUpdate); // since I already took care of it here, remove from depthCards
}
}
này không hoạt động mặc dù bởi vì tôi đang điều chỉnh việc thu thập ở giữa một vòng lặp. Câu hỏi của tôi là ... có một số loại bộ sưu tập nào cho phép loại truy cập này không?
Tôi không muốn ToList() các depthCards vì tôi đã có chúng và tôi muốn để sửa đổi danh sách đó khi tôi đang lặp lại. Có thể không?
thể luôn thêm một 'ở đâu() 'tuyên bố trong trước khi thực hiện' foreach() 'để thu hẹp kết quả trước loại bỏ chúng, nếu nó loại bỏ điều kiện. –
@Bob .: Không, bởi vì sau đó nó sẽ không còn là một 'Danh sách' nữa nhưng một 'IEnumerable 'không hỗ trợ phương thức' List.ForEach'. Bạn chỉ có thể sử dụng 'foreach' sau đó, nhưng sau đó nó không thể sửa đổi danh sách trong vòng lặp. –
Đó không phải là những gì 'ToList()' là dành cho? –