如何设置DTO';的属性值直接在LINQ select语句中
本文关键字:属性 LINQ 语句 select 何设置 设置 DTO | 更新日期: 2023-09-27 18:20:33
全部交易,
假设我有一个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属性的值。谢谢
您可以使用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
};