gpt4 book ai didi

c# - 仅使用 LinqToXml 读取内部列表

转载 作者:行者123 更新时间:2023-11-30 16:36:32 26 4
gpt4 key购买 nike

我想使用 LinqToXml 从 xml 文件中读出给定艺术家的专辑列表

<?xml version="1.0" encoding="utf-8" ?><artists>  <artist name="Beatles">    <albums>      <album title="Please Please Me" year="1963"/>      <album title="With the Beatles" year="1963"/>      ...    </albums>  </artist>  ...

我使用 LinqToXml 尝试了以下操作。但是,我想避免实例化艺术家对象...

XDocument xartists = XDocument.Load(FilePhysicalPath);var artists = from xartist in xartists.Descendants("artist")              where xartist.Attribute("name").Value.Equals(id)              select new MusicArtist              {                  Albums = from xalbum in xartist.Descendants("album")                           select new MusicAlbum                           {                               Title = xalbum.Attribute("title").Value,                               Year =                               int.Parse(xalbum.Attribute("year").Value)                           }              };var artist = artists.SingleOrDefault();if (artist != null)    return artist.Albums;else    return null;

更新:我目前的“最佳”尝试:查看已接受的答案。

最佳答案

尝试这样的事情:

    return (from artist in 
(from xartist in xartists.Descendants("artist")
where xartist.Attribute("name").Value.Equals("Beatles")
select new MusicArtist
{
Albums = from xalbum in xartist.Descendants("album")
select new MusicAlbum
{
Title = xalbum.Attribute("title").Value,
Year = int.Parse(xalbum.Attribute("year").Value)
}
})
where artist != null
select artist).FirstOrDefault();

关于c# - 仅使用 LinqToXml 读取内部列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/743138/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com