मेरे पास Dictionary<Guid, ElementViewModel>
है। (ElementViewModel हमारा स्वयं का जटिल प्रकार है।) मैं स्टॉक मानक items.Add(Guid.NewGuid, new ElementViewModel() { /*setters go here*/ });
,क्या एक शब्दकोश में वस्तुओं के क्रम का ट्रैक रखने का कोई तरीका है?
बाद के चरण में शब्दकोश में आइटम जोड़ता हूं, बाद में मैं कुछ या सभी आइटम हटा देता हूं।
मेरी ElementViewModel का एक साधारण दृश्य यह है:
class ElementViewModel
{
Guid Id { get; set; }
string Name { get; set; }
int SequenceNo { get; set; }
}
ऐसा नहीं है कि SequenceNos संग्रह के भीतर जोड़ने के बाद, मामले में अन्य कार्यों चलती और नकल जगह ले ली की तरह जमा कर रहे हैं उल्लेख करने के लिए महत्वपूर्ण हो सकता है। {1, 5, 6} -> {1, 2, 3}
मेरी निकालें 'संचालन का एक साधारण दृश्य है:
public void RemoveElementViewModel(IEnumerable<ElementViewModel> elementsToDelete)
{
foreach (var elementViewModel in elementsToDelete)
items.Remove(elementViewModel.Id);
CompactSequenceNumbers();
}
मैं एक उदाहरण के साथ समस्या को वर्णन होगा:
मैं शब्दकोश में 3 आइटम जोड़ें:
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" });
2 आइटम हटा
RemoveElementViewModel(new List<ElementViewModel> { item2, item3 }); //imagine I had them cached somewhere.
अब मैं 2 अन्य मदों जोड़ना चाहते हैं:
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" });
इस बिंदु पर शब्दकोश के मूल्यांकन पर, मैं होने की "तत्व 1", "एलिमेंट 2, भाग 2 वस्तुओं के आदेश की उम्मीद "" एलीमेंट 3, भाग 2 "
लेकिन यह वास्तव में इस क्रम में है: " तत्व 1 "," एलीमेंट 3, भाग 2 "," एलिमेंट 2 भाग 2 "
,
मैं इन वस्तुओं के आदेश पर एक निश्चित तरीके से भरोसा करता हूं। यह अपेक्षित क्यों नहीं है और मैं इसके बारे में क्या कर सकता हूं?
निश्चित रूप से, कुछ बुकमार्क प्राप्त करें :) –