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

VB.NET中如何从List(Of T)按子集合指定属性值筛选匹配对象

VB.NET 嵌套集合Linq筛选正确实现

原写法问题排查

  • 第一种写法错误原因:Where 运算符要求条件表达式返回布尔值,但你内层嵌套的y.Results.Where(...)返回的是符合条件的Results对象集合,而非布尔判断结果,语法校验无法通过。
  • 第二种写法逻辑本身正确,报错大概率源于两个问题:
    1. 变量类型不匹配:Tests是List(Of Test)类型,但你声明的接收变量是LimsTest,类型不一致导致赋值失败
    2. 值匹配规则问题:Results.Value的属性类型和ary(1)的类型不匹配,或Name的字符串匹配存在大小写、空格不符的情况

正确实现代码

' 提前转换目标值类型,避免隐式转换导致的匹配失败,可根据Value的实际类型调整转换逻辑
Dim targetValue As Object = ary(1)

' 写法1:仅取第一个匹配的Test对象,无匹配时返回Nothing
Dim aTest As Test = Tests.FirstOrDefault(Function(y) 
    Return y.Results.Any(Function(z) 
        ' 字符串对比增加忽略大小写参数,避免大小写导致匹配失效,不需要可删除
        Return z.Name.Equals("Test Temperature", StringComparison.OrdinalIgnoreCase) AndAlso z.Value.Equals(targetValue)
    End Function)
End Function)

扩展用法

如果需要筛选所有符合条件的Test对象而非仅取第一个,调整写法如下:

Dim matchedTests As List(Of Test) = Tests.Where(Function(y) 
    Return y.Results.Any(Function(z) z.Name = "Test Temperature" AndAlso z.Value = ary(1))
End Function).ToList()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:57:01