收藏我有一類名爲文件夾,它看起來像比較的集合
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
}
此外,如果這兩個集合是相同的,我得到不同的散列碼。
我的第二次嘗試是將類標記爲[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 '哪裏'T'是'文件夾' –
2014-09-24 14:14:28