我目前使用LINQ to SQL進行數據檢索,然後使用LINQ查詢填充自定義對象。我的自定義對象繼承自在datacontract中使用IsReference = true屬性的基類。然後我將對象層次結構並將其序列化爲XML,然後將其發送給服務。LINQ,自定義對象,序列化和對象引用
但是,這種方式可行,XML中發生的事情是對整個文件中的對象重複對象數據。我在XML文件中想要的是,如果一個對象與另一個相同類型的對象具有相同的數據(不管它在對象樹中的位置),我希望它具有對該第一個對象的引用,並且不重複數據。
我需要一些對象跟蹤,不知道它是否可以在LINQ DataContext級別處理,或者因爲我正在實例化我自己的自定義對象,如果我應該在該級別使用類似於每個對象的哈希表來跟蹤它類型。
這裏是我的課是這樣的:
class Section1 {
public static MyClass GetClasses(int Id)
{
using (DataContext dataContext = new DataContext())
{
var result = from items in dataContext.Table
where item.Id == Id
select items;
foreach (var entry in result)
{
MyClass myClass = new MyClass();
myclass.Id = entry.Id;
}
}
return myclass;
}
}
後來在我的節目,我創造了同類型的項目,如在其他類中的方法的另一份名單,我希望一些結果是與第一次調用相同:
Class2 {
public static MyClass GetItemClasses(int ItemId)
{
MyClass myClass = new MyClass();
using (DataContext dataContext = new DataContext())
{
var result = from items in dataContext.Table
where item.Id == ItemId
select items;
foreach (var entry in result)
{
MyClass myClass = new MyClass();
myclass.Id = entry.Id;
}
}
return myclass;
}
}
這樣做可以成功填充我然後序列化的所有對象。關於如何在XML文件中引用重複的對象的任何想法?
感謝您的任何意見。