我有一種將XML反序列化爲特定用戶定義類型(Product Class)的方法。c#如何返回用戶定義類型的空對象?
public Class Product
{
public int ID{ get; set; }
public string ModelNumber { get; set; }
public string SKU { get; set; }
public string Att4 { get; set; }
public string Att5 { get; set; }
}
該方法將接受XML對象並讀取它的屬性並返回一個產品類。當XML爲空時,我有一個條件我想返回一個像這樣的空對象{}。這裏是我的反序列化方法:
public static Product DeserializeXmlAsParentProduct(object xml)
{
if (xml == DBNull.Value)
return // I want to return {};
var doc = XDocument.Parse(xml.ToString());
var product = doc.Descendants("row").Select(pd => new Product
{
ID = GetValue<int>(pd.Element("ID")),
ModelNumber = GetValue<string>(pd.Element("ModelNumber")),
SKU = GetValue<string>(pd.Element("SKU"))
})
.ToList().FirstOrDefault();
return product;
}
我在放XML將看起來像這樣當值從DB中檢索:
<root>
<row>
<ID>8</ID>
<ModelNumber>GT</ModelNumber>
<SKU>UR</SKU>
<row/>
</root>
我怎樣才能返回空對象,如果條件得到滿足?
另外如果一切順利。它會爲我返回一個包含所有屬性的產品類。
{ID, ModelNumber, SKU, Att4, Att5}`
如何使用LINQ僅返回前三個屬性?像這樣:
{ID, ModelNumber, SKU}
我正在考慮使用動態對象。有沒有其他方法可以實現這一目標?
任何幫助表示讚賞。
如果你正在做對象序列化的一個很大的問題,我建議使用這種方法的HTTP ://msdn.microsoft.com/en-us/library/tz8csy73%28v=vs.110%29.aspx – Gusdor
此外,我不禁質疑存儲在數據庫中的值爲xml的智慧。 – Gusdor
實際上,我不是將數據以DB的形式存儲在數據庫中,但是我將它們作爲XML檢索。我正在使用這個SQL Sever選項:SELECT P.ID,P.ModelNumber,P.SKU FOR XML RAW,ELEMENTS,ROOT('root')。 – user123456