[英]LINQ Query result to object
我有一個 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 對象中,我該如何實現?
您可以從每個項目中選擇一個新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();
當然,您可以將此映射分解為單獨的方法,並使用select MyMappingMethod(item)
來實現可重用性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.