You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET XML查询中如何用Equals()匹配多个属性值?

VB.NET 检索name属性为"Source"或"Input"的节点解决方案

你原来的代码之所以失败,是因为把单个字符串和字符串数组直接用Equals比较——类型不匹配,永远返回False,自然找不到目标节点。下面给你两种可行的解决办法:

方法一:利用数组的Contains方法(适合选项较多的场景)

先定义目标值数组,然后在Lambda表达式里判断节点的name属性值是否在数组中,同时要先判断属性是否存在,避免空引用异常:

Dim cases As String() = {"Source", "Input"}
Dim mycol = xml.First(Function(x) 
    Dim nameAttr = x.Attribute("name")
    Return nameAttr IsNot Nothing AndAlso cases.Contains(CStr(nameAttr))
End Function)

方法二:直接用OrElse拼接条件(适合选项较少的场景)

如果只需要匹配两三个值,直接写逻辑或条件更直观:

Dim mycol = xml.First(Function(x)
    Dim nameAttr = x.Attribute("name")
    Return nameAttr IsNot Nothing AndAlso 
           (CStr(nameAttr) = "Source" OrElse CStr(nameAttr) = "Input")
End Function)

额外提醒

  • 如果不确定是否存在符合条件的节点,建议用FirstOrDefault代替First,这样找不到节点时会返回Nothing,不会抛出异常;
  • 如果需要获取所有符合条件的节点,把First换成Where即可,返回的是节点集合。

内容的提问来源于stack exchange,提问作者legends1337

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 08:05:54