C# 如何从XML加载子元素列表?
我需要在每个查询中列出行项目。下面我只得到查询的值,而不是它的行项目列表C# 如何从XML加载子元素列表?,c#,xml,list,xelement,C#,Xml,List,Xelement,我需要在每个查询中列出行项目。下面我只得到查询的值,而不是它的行项目列表 XElement myElement = XElement.Load("Inquiries.xml"); var query = from s in myElement.Elements("Inquiry") select new { InquiryId = (int)s.Ele
XElement myElement = XElement.Load("Inquiries.xml");
var query = from s in myElement.Elements("Inquiry")
select new
{
InquiryId = (int)s.Element("InquiryId"),
FirstName = (string)s.Element("FirstName"),
LastName = (string)s.Element("LastName"),
LineItems = from l in myElement.Elements("Inquiry").Elements("LineItems")
select new
{
Quantity = (int)l.Attribute("quantity"),
PartNumber = (string)l.Attribute("partnumber")
}
};
var result = query.ToList();
XML:
0
约翰
史密斯
1.
史诗
贝尔德曼
这应该可以:
public void Test()
{
var inquiries = XElement.Load("Test.xml").Elements("Inquiry")
.Select(i => new Inquiry
{
InquiryId = int.Parse(i.Element("InquiryId").Value),
FirstName = i.Element("FirstName").Value,
LastName = i.Element("LastName").Value,
LineItems = i.Elements("LineItems").Descendants()
.Select(li => new LineItem
{
Quantity = int.Parse(li.Attribute("quantity").Value),
PartNumber = li.Attribute("partnumber").Value
}).ToList()
}).ToList();
}
}
public class Inquiry
{
public int InquiryId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public List<LineItem> LineItems { get; set; }
}
public class LineItem
{
public int Quantity { get; set; }
public string PartNumber { get; set; }
}
公共无效测试()
{
var查询=XElement.Load(“Test.xml”).Elements(“查询”)
.选择(i=>新查询
{
InquiryId=int.Parse(i.Element(“InquiryId”).Value),
FirstName=i.Element(“FirstName”).Value,
LastName=i.Element(“LastName”).Value,
LineItems=i.Elements(“LineItems”).subjects()
.选择(li=>new LineItem
{
数量=int.Parse(li.Attribute(“数量”).Value),
PartNumber=li.Attribute(“PartNumber”).Value
})托利斯先生()
}).ToList();
}
}
公开课查询
{
公共int查询ID{get;set;}
公共字符串名{get;set;}
公共字符串LastName{get;set;}
公共列表行项目{get;set;}
}
公共类行项目
{
公共整数数量{get;set;}
公共字符串零件号{get;set;}
}
但如何将子元素的属性放入列表?您需要列表显示哪些属性?数量和零件号,但我需要它们作为查询列表中的列表。这很有效,谢谢。我必须研究多元化,因为我对它们感到困惑。
public void Test()
{
var inquiries = XElement.Load("Test.xml").Elements("Inquiry")
.Select(i => new Inquiry
{
InquiryId = int.Parse(i.Element("InquiryId").Value),
FirstName = i.Element("FirstName").Value,
LastName = i.Element("LastName").Value,
LineItems = i.Elements("LineItems").Descendants()
.Select(li => new LineItem
{
Quantity = int.Parse(li.Attribute("quantity").Value),
PartNumber = li.Attribute("partnumber").Value
}).ToList()
}).ToList();
}
}
public class Inquiry
{
public int InquiryId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public List<LineItem> LineItems { get; set; }
}
public class LineItem
{
public int Quantity { get; set; }
public string PartNumber { get; set; }
}
XElement myElement = XElement.Load("Inquiries.xml");
var query = from s in myElement.Elements("Inquiry")
select new
{
InquiryId = Convert.ToInt32(s.Element("InquiryId").Value),
FirstName = s.Element("FirstName").Value,
LastName = s.Element("LastName").Value,
LineItems = (from l in s.Element("LineItems").Elements("LineItem")
select new
{
Quantity = Convert.ToInt32(l.Attribute("quantity").Value),
PartNumber = l.Attribute("partnumber").Value
}).ToList()
};
var result = query.ToList();