我想学习如何在C#中用XML保存和提取数据,即使我已经阅读了关于这里的类似问题的各种答案,但我无法获得保留为什么我的陈述没有任何回报。 我正在编写的程序只是一个测试,其中我已经在xml文档中保存了关于几部电影的数据,现在我试图根据它们的成本检索其中的一些。用linq搜索Xml文档不返回任何东西
这是我为搜索编写的类:
class ExtractData
{
private XDocument _xdoc;
public List<string> SearchByCost(double cost)
{
_xdoc = XDocument.Load(FileLocation.XmlFileLocation);
List<string> list = new List<string>();
var movies = from movie in _xdoc.Root.Elements("Name")
where Convert.ToDouble(movie.Element("Cost").Value) < cost
select movie;
foreach (var item in movies)
{
list.Add(item.Value);
}
return list;
}
}
这是我正在努力使其打印在控制台:
eData = new ExtractData();
foreach (var movie in eData.SearchByCost(9))
{
Console.WriteLine(movie);
}
这是XML文档的内容:
<?xml version="1.0" encoding="utf-8"?>
<Movies>
<Movie>
<Id>1</Id>
<Name>Shawshank Redemption</Name>
<Director>Frank Darabont</Director>
<Year>1994</Year>
<Cost>9.95</Cost>
</Movie>
<Movie>
<Id>2</Id>
<Name>Pulp Fiction</Name>
<Director>Quentin Tarantino</Director>
<Year>1995</Year>
<Cost>8.95</Cost>
</Movie>
<Movie>
<Id>3</Id>
<Name>Sharknado</Name>
<Director>Anthony Ferrante</Director>
<Year>2013</Year>
<Cost>5.95</Cost>
</Movie>
</Movies>
我希望这是足够的信息来尝试和帮助我,并提前致谢! :)
您需要调试代码。另外,'var movies = from _xdoc.Root.Elements(“Name”)中的影片会选择(可能 - 它可能不会返回任何内容,但如果是的话......)所有元素。然后,您尝试通过'movie.Element(“Cost”)检索成本,但元素*没有任何子元素!! *至少需要将其更改为_xdoc.Root.Elements (“电影”)'并在末尾做一个'select movie.Elements(“Name”)'或类似的名字,以获得匹配的所有电影名称。 –
Will
谢谢,我显然已经把那个linq查询中的元素名称混淆了一下。感谢您的帮助:) – sunero4