我无法完全理解我的查询。鉴于此XML:
<?xml version="1.0" encoding="utf-8" ?>
<FileTypes>
<File type="photo">
<Extension>.jpg</Extension>
<Extension>.gif</Extension>
</File>
<File type="document">
<Extension>.pdf</Extension>
</File>
<File type="video">
<Extension>.flv</Extension>
</File>
</FileTypes>
我想为给定的文件类型提取字符串数组的扩展名。这就是我到目前为止所做的:
var query = from m in _UploadFileTypes.Elements("FileTypes").Elements("File")
where m.Attribute("type").Value.ToUpper() == fileTypeFilter
select m.Elements("Extension");
foreach (var item in query)
{
//item.ToString() does not yield the correct value...
}
非常感谢任何帮助!
答案 0 :(得分:2)
试试这个:
var query =
from file in _UploadFileTypes.Root.Elements("File")
let typeAttrib = file.Attribute("type")
where
typeAttribute != null
&& typeAttribute.Value.ToUpper() == fileTypeFilter
from extension in file.Elements("Extension")
select extension.Value;
foreach (var extension in query)
{
// extension is the string content of the Extension element
}
答案 1 :(得分:1)
@Jacob给出了一个很好的答案,但我相信只使用item.Value
而不是item.ToString
会使用您拥有的代码提供您正在寻找的价值。
您可以使用IntelliSense将鼠标悬停在query
上,以查看其项目是否为XElement类型。 @ Jacob的答案包含查询中的.Value
,所以在他的版本query
中包含字符串。