Dictionary<Guid, ElementViewModel>
var. (ElementViewModel kendi karmaşık tipimizdir.) Sözlüğe bir stok standart items.Add(Guid.NewGuid, new ElementViewModel() { /*setters go here*/ });
,Sözlükteki öğelerin sıralamasını takip etmenin bir yolu var mı?
ile ürün ekleyelim. Daha sonraki bir aşamada, bu öğelerden bazılarını veya hepsini siliyorum.
benim ElementViewModel bir basit görünümü şudur:
class ElementViewModel
{
Guid Id { get; set; }
string Name { get; set; }
int SequenceNo { get; set; }
}
Bu SequenceNos hareketli ve kopyalama gerçekleşti gibi durumlarda, ekledikten sonra koleksiyon içinde diğer işlemler sıkıştırılmış olduğundan bahsetmek önemli olabilir. {1, 5, 6} -> {1, 2, 3}
zaman kaldırma işleminin Basit bir görünüşüdür:
public void RemoveElementViewModel(IEnumerable<ElementViewModel> elementsToDelete)
{
foreach (var elementViewModel in elementsToDelete)
items.Remove(elementViewModel.Id);
CompactSequenceNumbers();
}
Bir örnekle sorun açıklayacaktır:
Ben sözlüğe 3 öğe ekleyin:
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" });
Ben 2 öğeleri kaldırmak
RemoveElementViewModel(new List<ElementViewModel> { item2, item3 }); //imagine I had them cached somewhere.
Şimdi 2 diğer öğeleri eklemek istiyorum: Ben "Eleman 1", "Öğe 2, Bölüm 2 olmak öğelerin sırasını beklenen bu noktada sözlüğe değerlendirilmesi üzerine
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" });
", "Eleman 3, Bölüm 2"
ama şu sırayla aslında: " Eleman 1", "Eleman 3, Bölüm 2", "Unsuru 2 Bölüm 2"
Bu öğelerin sırasına belirli bir şekilde güveniyorum. Neden beklendiği gibi değil ve bu konuda ne yapabilirim?
Elbette, bazı yer imleri alın :) –