【问题标题】:Using LINQ to fill a List<object> from xml使用 LINQ 从 xml 填充 List<object>
【发布时间】:2011-10-21 15:45:56
【问题描述】:

我是 LINQ 的新手。我需要用来自 xml 的信息填充以下类的 List

class Person
{
    int id;
    string name;
    string address;
}

List<Person> people = new List<Person>();

在 LINQ 中正确的做法是什么。

 <Company>
  ...
  ...<!--Lot of items -->
  ...
  <People>      <!--People appears only once -->
        <Instance>
            <ID>1</ID>
            <Name>NameA</Name>
            <Address>AddressA</Address>         
        </Instance>
        <Instance>
            <ID>2</ID>
            <Name>NameB</Name>
            <Address>AddressB</Address>         
        </Instance>
        ..
        ..
 </People>
</Company>

我需要知道 LINQ 表达式的结构才能直接到达&lt;People&gt; 标签。另外,是否有填充List', i.e mapPersontoInstance` 标签的快捷方式。

【问题讨论】:

    标签: c# linq xaml


    【解决方案1】:

    我希望您知道您需要将您的字段(或者最好将它们设置为属性)公开,以便能够填充对象值。您的类字段中缺少公共修饰符。

    var doc = XDocument.Parse(xmlString);
    List<People> people = doc.Descendants("People")
                          .FirstOrDefault()
                          .Descendants("Instance")
                          .Select(p=> new Person()
                                      {
                                          ID = p.Element("ID").Value, 
                                          Name = p.Element("Name").Value, 
                                          Address=p.Element("Address").Value
                                       }).ToList();
    

    【讨论】:

      【解决方案2】:

      同意@Hasan Khan 的回答,但您还需要在您的 person 类中公开您的字段,以便您可以实例化它们。您可以使用自动属性,如下所示:

          class Person
          {
              public int Id { get; set; }
              public string Address { get; set; }
              public string Name { get; set; }
          }
      

      【讨论】:

        【解决方案3】:

        这里有Linq To XML的使用教程

        【讨论】:

          猜你喜欢
          • 2014-01-20
          • 1970-01-01
          • 2012-07-14
          • 2016-08-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-06
          • 1970-01-01
          相关资源
          最近更新 更多