簡體   English   中英

LINQ 查詢結果到對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM