Сериализация C# XML: объединение нескольких списков перед сохранениемC#

Место общения программистов C#
Ответить
Anonymous
 Сериализация C# XML: объединение нескольких списков перед сохранением

Сообщение Anonymous »

В настоящее время я работаю над небольшим приложением для управления финансами и использую XmlSerializer для сохранения своих данных. Я поддерживаю основной список (allRecords), содержащий все данные, и два отдельных списка (incomeList и CostList), используемые для отображения пользовательского интерфейса.
Моя цель — обеспечить, чтобы при сохранении все новые записи из подсписков объединялись в основной список без создания дубликатов. В настоящее время я обрабатываю это с помощью проверки .Contains() перед добавлением.
Мой вопрос: является ли этот подход чистым или я могу столкнуться с проблемами, связанными со ссылками на объекты (ссылочное равенство)? Есть ли более эффективный или «лучший» способ синхронизации этих списков перед сериализацией?
Вот мой код:
public void LoadData()
{
XmlSerializer serializer = new XmlSerializer(typeof(List));
using var stream = new FileStream("Data.xml", FileMode.Open);

allRecords = (List) serializer.Deserialize(stream);

foreach (var record in allRecords)
{
if (record.Type == "Income")
{
incomeList.Add(record);
}
else if(record.Type == "Expense")
{
expenseList.Add(record);
}
}
}

public void SaveData()
{
XmlSerializer serializer = new XmlSerializer(typeof(List));
using var stream = new FileStream("Statement.xml", FileMode.Create);

foreach (var income in incomeList)
{
if (!allRecords.Contains(income))
{
allRecords.Add(income);
}
}

foreach (var expense in expenseList)
{
if (!allRecords.Contains(expense))
{
allRecords.Add(expense);
}
}

serializer.Serialize(stream, allRecords);
}


Подробнее здесь: https://stackoverflow.com/questions/798 ... ore-saving
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»