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

VB.NET实现查找最低唯一值的Linq查询返回结果错误问题排查

问题根因

现有代码核心逻辑存在两处严重错误:

  • 过滤逻辑完全不符合需求:Where从句中依赖外部变量alreadyFound做状态控制,遍历到ValuesFoundInPath的第一个元素时就会标记已找到、过滤掉所有后续元素,后续的排序逻辑根本不会生效,完全没有实现「优先匹配最低唯一值」的规则
  • 优先级规则未实现:没有先筛选属于唯一值集合的候选、再兜底取全局最小值的逻辑,直接按列表添加顺序返回第一个元素
修正实现

正确实现逻辑:

  1. 先对所有候选值按要求排序:优先级为值升序→行号升序→列号升序
  2. 优先从排序后的候选中查找第一个属于唯一值集合的元素
  3. 若未找到符合条件的唯一值,取排序后的第一个元素(全局最小值)

修正后的代码如下:

Private Sub Button11_Click(sender As Object, e As EventArgs) Handles Button11.Click
    Dim UniqueValuesFound As New List(Of Short)
    Dim ValuesFoundInPath As New List(Of FoundValue)

    UniqueValuesFound.Add(1)
    'UniqueValuesFound.Add(0)
    'UniqueValuesFound.Add(2)
    'UniqueValuesFound.Add(3)

    UniqueValuesFound = UniqueValuesFound.Distinct().ToList()
    UniqueValuesFound.Sort()

    Dim foundValue As New FoundValue
    foundValue.Value = 2
    foundValue.Row = 1
    foundValue.Column = 1
    ValuesFoundInPath.Add(foundValue)

    'foundValue = New FoundValue
    'foundValue.Value = 3
    'foundValue.Row = 0
    'foundValue.Column = 2
    'ValuesFoundInPath.Add(foundValue)

    'foundValue = New FoundValue
    'foundValue.Value = 2
    'foundValue.Row = 0
    'foundValue.Column = 2
    'ValuesFoundInPath.Add(foundValue)

    'foundValue = New FoundValue
    'foundValue.Value = 0
    'foundValue.Row = 2
    'foundValue.Column = 0
    'ValuesFoundInPath.Add(foundValue)

    ' 第一步:对所有候选值按规则排序
    Dim sortedCandidates = ValuesFoundInPath.
        OrderBy(Function(p) p.Value).
        ThenBy(Function(p) p.Row).
        ThenBy(Function(p) p.Column).
        ToList()
    
    ' 第二步:优先查找最低唯一值
    Dim targetValue = sortedCandidates.
        FirstOrDefault(Function(s) UniqueValuesFound.BinarySearch(s.Value) >= 0)
    
    ' 第三步:未找到唯一值则取全局最小值
    If targetValue Is Nothing Then
        targetValue = sortedCandidates.First()
    End If

    Console.WriteLine($"{targetValue.Value},{targetValue.Row},{targetValue.Column}")
End Sub

用你提供的测试数据运行后,输出结果为2,1,1,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:57:02