C# 将XML元素和子元素放入列表

C# 将XML元素和子元素放入列表,c#,xml,linq,C#,Xml,Linq,给定以下XML,如何使用以下实现将每条记录读入对象列表(记录列表) class Record { public string Name {get; set;} public List<Skill> Skills {get; set;} } class Skill { public string SkillName {get; set;} public string SkillType {get; set;} } 课堂记录 { 公共字符串名称{get;set

给定以下XML,如何使用以下实现将每条记录读入对象列表(记录列表)

class Record
{
   public string Name {get; set;}
   public List<Skill> Skills {get; set;}
}

class Skill
{
   public string SkillName {get; set;}
   public string SkillType {get; set;}
}
课堂记录
{
公共字符串名称{get;set;}
公共列表技能{get;set;}
}
课堂技能
{
公共字符串SkillName{get;set;}
公共字符串SkillType{get;set;}
}
xml


约翰
网球
运动
提琴
音乐
胡安妮塔
足球
运动
陶器
工艺
我试图获得子元素(技能)的尝试没有成功

List<Records> records;
DataSet dstRecords = new DataSet();
dstRecords.ReadXml(file);

foreach (DataRow row in dstRecords.Tables[0].Rows)
            {

                Record record = new Record
                {
                    Name = Convert.ToString(row["name"]),
                    Skills = skills
                };
                records.Add(records);
            }
列出记录;
数据集dstRecords=新数据集();
dstRecords.ReadXml(文件);
foreach(dstRecords.Tables[0].Rows中的DataRow行)
{
记录=新记录
{
Name=Convert.ToString(行[“Name”]),
技能=技能
};
记录。添加(记录);
}

假设您希望Linq转换为XML,您只需将必要的调用“链接”到
元素和
元素(或
子体
):

如何将“技能”绑定到列表框,将“名称”绑定到文本框?
List<Records> records;
DataSet dstRecords = new DataSet();
dstRecords.ReadXml(file);

foreach (DataRow row in dstRecords.Tables[0].Rows)
            {

                Record record = new Record
                {
                    Name = Convert.ToString(row["name"]),
                    Skills = skills
                };
                records.Add(records);
            }
// assuming XDocument xdoc = ...
var records = from r in xdoc.Root.Elements("record")
              select new Record
              {
                  Name = (string)r.Element("name"),
                  Skills = (from s in r.Element("skills").Elements("skill")
                            select new Skill
                            {
                                SkillName = (string)s.Element("skillname"),
                                SkillType = (string)s.Element("skilltype")
                            }).ToList()
              };
XDocument xDoc = XDocument.Parse(xmlstring); //or XDocument.Load(filename);
var list = xDoc.Descendants("record")
            .Select(r => new Record
            {
                Name = (string)r.Element("name"),
                Skills = r.Descendants("skill")
                           .Select(s=>new Skill{
                               SkillName = (string)s.Element("skillname"),
                               SkillType = (string)s.Element("skilltype"),
                           })
                           .ToList()
            })
            .ToList();