2014-02-15 2 views
0

У меня есть 4 словаря (добавлено, удалено, обновлено), каждые 1 минуту я загружаю XML-файл, и я поместил уникальный идентификатор в KEY словаря и сам XML в VALUE.Отслеживать изменения в Списке <XElement>

XML выглядит следующим образом:

<Worker ID="1" Name="James Smith"> 
    <Details Key="" Value="" /> 
    <Details Key="" Value="" /> 
    <Details Key="" Value="" /> 
    <Details Key="" Value="" /> 
    <Details Key="" Value="" /> 
</Worker> 

Так что в этом случае я ставлю ID работника в KEY и весь XML в стоимости.

Логика должна быть:

* if ID doesn't exist, it should be inserted to Added. 
* if ID exists and was changed it should be added to Updated. 
* if ID was removed, it should be added to Removed. 

С каждым запуском, словари должны сбросить себя, так что я получаю только последние изменения прогонов.

Мне было интересно, какой самый эффективный способ отслеживать изменения XML самым быстрым способом?

ответ

0

Это сборники словарей, верно? Они могут содержать только одно значение для каждого отдельного ключа.

Так вы сделаете это:

if (dict.ContainsKey(workerId)) { 
    dict[workerId] = newXmlValue; 
} 
else { 
    dict.Add(workerId,newXmlValue); 
} 

я не полностью понять «удалить» часть вашего вопроса. Но легко удалить значение из словаря.

dict.Remove(workerId); 

Если конкретный ключ workerId еще не находится в словаре, это поместит его там. Если это так, он обновит newXmlValue до последней и самой большой.

Это примерно такая же эффективная структура данных, как вы можете получить с точкой net, как во времени, так и в памяти.

Смежные вопросы