我有一种将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