Tôi có một Dictionary<Guid, ElementViewModel>
. (ElementViewModel là loại phức hợp của chúng tôi.) Tôi thêm các mục vào từ điển với tiêu chuẩn chứng khoán items.Add(Guid.NewGuid, new ElementViewModel() { /*setters go here*/ });
,Có cách nào để theo dõi thứ tự các mục trong từ điển không?
Ở giai đoạn sau, tôi xóa một số hoặc tất cả các mục này.
Một cái nhìn đơn giản của ElementViewModel của tôi là thế này:
class ElementViewModel
{
Guid Id { get; set; }
string Name { get; set; }
int SequenceNo { get; set; }
}
Nó có thể là đáng kể kể rằng SequenceNos được đầm trong bộ sưu tập sau khi thêm, trong trường hợp các hoạt động khác như di chuyển và sao chép diễn ra. {1, 5, 6} -> {1, 2, 3}
Một cái nhìn đơn giản của hoạt động loại bỏ của tôi là:
public void RemoveElementViewModel(IEnumerable<ElementViewModel> elementsToDelete)
{
foreach (var elementViewModel in elementsToDelete)
items.Remove(elementViewModel.Id);
CompactSequenceNumbers();
}
tôi sẽ minh họa cho vấn đề với một ví dụ:
tôi thêm 3 mục vào từ điển:
var newGuid = Guid.NewGuid();
items.Add(newGuid, new MineLayoutElementViewModel { Id = newGuid, SequenceNo = 1, Name = "Element 1" });
newGuid = Guid.NewGuid();
items.Add(newGuid, new MineLayoutElementViewModel { Id = newGuid, SequenceNo = 2, Name = "Element 2" });
newGuid = Guid.NewGuid();
items.Add(newGuid, new MineLayoutElementViewModel { Id = newGuid, SequenceNo = 3, Name = "Element 3" });
tôi loại bỏ 2 mục
01.RemoveElementViewModel(new List<ElementViewModel> { item2, item3 }); //imagine I had them cached somewhere.
Bây giờ tôi muốn thêm 2 mặt hàng khác:
newGuid = Guid.NewGuid();
items.Add(newGuid, new MineLayoutElementViewModel { Id = newGuid, SequenceNo = 2, Name = "Element 2, Part 2" });
newGuid = Guid.NewGuid();
items.Add(newGuid, new MineLayoutElementViewModel { Id = newGuid, SequenceNo = 3, Name = "Element 3, Part 2" });
On đánh giá của từ điển vào thời điểm này, tôi mong đợi thứ tự của mục được "Yếu tố 1", "Yếu tố 2, Phần 2 ", "Yếu tố 3, Phần 2"
nhưng nó thực sự là theo thứ tự sau: "Yếu tố 1", "Yếu tố 3 Phần 2", "Yếu tố 2, Phần 2"
Tôi dựa vào thứ tự của các mục này theo một cách nhất định. Tại sao nó không như mong đợi và tôi có thể làm gì với nó?
Chắc chắn, nhận một số dấu trang :) –