我有一个XML文档,用于存储一些数据,我需要查询该文件中的数据并获得一条记录,我使用此代码来完成
xmlDoc = XDocument.Load("Data.xml");
var updateQuery = (from item in xmlDoc.Descendants("Event")
where item.Element("id").Value == id
select item).FirstOrDefault();
public class Event
{
public string id { get; set; }
public string title { get; set; }
public DateTime Start { get; set; }
public DateTime End { get; set; }
public virtual List<Contact> contacts { get; set; }
}
<Event>
<id>1</id>
<title>AA</title>
<start>2019-12-01T14:13:58.863</start>
<end>2019-12-01T15:13:58.787</end>
<contacts>
<contact>
<id>1</id>
<name>ABC</name>
</contact>
<contact>
<id>2</id>
<name>ABCD</name>
</contact>
<contact>
<id>3</id>
<name>ABCDE</name>
</contact>
</contacts>
</Event>
我可以完美地得到结果,但是我需要将数据输入到Event对象中,如何实现呢?
答案 0 :(得分:1)
您可以从每个项目中选择一个新的 { $group: {
"_id": "$_id.uid",
"winnerCount": { $sum: {$cond: [{$gt: ['$winnings.coins', 0]}, 1, 0]} }, // count of winners who have more than 0 coins
"looserCount": { $sum: {$cond: [{$gt: ['$winnings.coins', 0]}, 0, 1]} } // count of loosers who dont have any coins
} }
:
Event
当然,您可以将此映射分解为单独的方法,并使用var event = (from item in xmlDoc.Descendants("Event")
where item.Element("id").Value == id
select new Event
{
id = item.Element("id").Value,
title = item.Element("title").Value,
Start = DateTime.Parse(item.Element("start").Value),
End = DateTime.Parse(item.Element("end").Value),
contacts = item.Element("contacts").Elements("contact").Select(c => new Contact
{
Id = c.Element("id").Value,
Name = c.Element("name").Value
}).ToList()
}).FirstOrDefault();
获得可重用性。