如何设置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属性的值。谢谢

如何设置DTO';的属性值直接在LINQ select语句中

您可以使用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
};