全部交易,
假设我有一个XML文件,我需要将其解析为对象(DTO)。例如:
<Root>
<Item>
<X>1</X>
<Y>2</Y>
<Item>
</Root>
我有一个DTO对象:
public class Item
{
public int X{get;set;}
public int Y{get;set;}
public int Z{get;set;}
}
要创建一个Item对象,我需要知道X和Y,我将设置Z = X * Y
我使用LINQ将XML解析为对象:
XDocument reportDoc = XDocument.Load(@"Report.xml");
var query = from item in reportDoc.Element("Root").Descendants()
select new Item()
{
X = Convert.ToInt32(item.Element("X").Value),
Y = Convert.ToInt32(item.Element("Y").Value)
// Z = X*Y -> I can't do this by this statement
};
请帮我看看如何在LINQ select语句中直接设置Z属性值。感谢。
答案 0 :(得分:3)
您可以使用let
子句声明中间变量:
XDocument reportDoc = XDocument.Load(@"Report.xml");
var query = from item in reportDoc.Element("Root").Descendants()
let x = Convert.ToInt32(ticket.Element("X").Value)
let y = Convert.ToInt32(ticket.Element("Y").Value)
select new Item()
{
X = x,
Y = y
Z = x * y
};