【发布时间】:2010-12-17 04:43:36
【问题描述】:
我想问一个老歌(但很好)Reading the list of References from csproj files 的后续问题(尽管我不是该问题的作者)。
在解析 csproj 文件时,我需要选择所有具有 Link 元素作为子元素的 Compile 元素。
我首先尝试将答案扩展到链接问题如下:
IEnumerable<string> links = csprojFile
Element(msbuild + "Project")
.Elements(msbuild + "ItemGroup")
.Elements(msbuild + "Compile")
.Where(element => element.HasElements)
.Attributes("Include")
这显然是不够的,因为它会选择所有具有任何类型子元素的元素(所以在选择我想要的元素时,它也会选择额外的元素)。于是我尝试了:
IEnumerable<string> links = csprojFile
.Element(msbuild + "Project")
.Elements(msbuild + "ItemGroup")
.Elements(msbuild + "Compile")
.Where(element => element.HasElements && element.Descendants("Link").Any())
.Attributes("Include")
.Select(element => element.Value);
... 不返回任何内容。我一般是 Linq 的初学者,特别是 Linq2XML 的初学者,但对我来说,“Where”子句说:“元素有子元素,并且其中至少有一个子元素被命名为 Link”。有错吗?
非常感谢您的帮助。
【问题讨论】:
标签: c# .net linq linq-to-xml csproj