c# - 带有 XML 问题的 LINQ

标签 c# linq

如何使用 LINQ 检索基于条件 URL="localhoist"Supported 属性的特定值?谢谢。

<SomeSetting>
  <Setting URL="abc.com" Supported="sb.new,mgrsma" />
  <Setting URL="localhost" Supported="GG,LLmgrsma,FF1,FF3" />
  <Setting URL="def.zxy.com" Supported="xyz" />
</SomeSetting>

最佳答案

像这样:

var localhost = doc.Descendants("Setting")
                   .Where(x => (string) x.Attribute("URL") == "localhost")
                   .Select(x => (string) x.Attribute("Supported"))
                   .FirstOrDefault();

一次一行:

  • 首先选择所有“设置”元素;您也可以使用 someSetting.Elements("Setting") 执行此操作,其中 someSettingSomeSetting 元素
  • 添加一个 where 子句来过滤掉没有 localhost URL 的元素。我正在使用显式字符串转换而不是 Value 属性,以便它处理没有 URL 属性的元素;在这种情况下,转换将返回 null
  • 选择 Supported 属性值 - 同样,如果 URL=localhost 元素没有 Supported 属性,这将返回 null。
  • 选择第一个结果,如果没有结果则选择 null。如果您可能有多个元素并想检查所有元素,只需删除此调用即可。

关于c# - 带有 XML 问题的 LINQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3115947/

相关文章:

c# - 对二维数组的列求和

c# - 在 Linq 中按问题分组

c# - 从另一个 XDocument 中删除 XElement

c# - 为什么在使用 Linq 时需要初始化一个 out 变量

c# - 我的程序快速排序不起作用

c# - 在哪里可以找到完整的属性列表以使用 LDAP 过滤器进行搜索?

c# - 获取 DER 编码的公钥

c# - 在 ASP.NET 中创建基于订阅的网站

c# - WebClient.DownloadString 不返回任何数据

.net - NHibernate 和存储库模式