У меня есть класс с именем папки, которая выглядит какСравнить Коллекция Коллекции
public class Folder
{
public int Id{get;set;}
public string Titel{get;set;}
public List<Folder> Folders{get;set;}
public List<Document> Documents{get;set;}
}
Я получаю список папок из базы данных каждые 10 секунд. Теперь мне нужно сравнить новый список папок с тем, который у меня уже есть в памяти.
Каков наилучший способ для этого?
Мой первый подход должен был сделать:
if(currentFolders.GetHashCode() != newFolders.GetHashCode())
{
// Work with changed data
}
Кроме того, если обе коллекции идентичны я получаю разные hashcodes.
Моя вторая попытка была пометить класс как [Serializable]
и сериализовать как списки в Byte[]
byte[] b1, b2;
using (var m1 = new MemoryStream())
{
using (var m2 = new MemoryStream())
{
var binaryFormatter = new BinaryFormatter();
binaryFormatter.Serialize(m1, newFolders);
b1 = m1.ToArray();
binaryFormatter.Serialize(m2, currentFolders);
b2 = m2.ToArray();
}
}
К сожалению, Folder
- class
автоматически генерируется через Linq2SQL, поэтому я не могу легко пометить его как Serializable
Что еще я могу сделать, чтобы сравнить эти две коллекции?
Реализовать 'IEquatable' или создать ' IEqualityComparer '' '' '' Folder' –