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

如何编写LINQ查询筛选同时存在两种错误的请求编号?

用LINQ筛选恰好包含两种不同错误的请求编号

嘿,我明白你想要的效果——从requestErrorList里找出那些恰好对应两种不同错误类型的请求编号(比如你说的1和6),用LINQ可以把你现在的循环逻辑简化成更简洁易读的代码,完全不用手动遍历啦!

直接上VB.NET的LINQ实现代码

Dim requestWithTwoErrors = requestErrorList
    .GroupBy(Function(item) item.requestNumber) ' 按请求编号分组
    .Where(Function(group) 
               ' 统计分组内不同错误的数量,排除重复的同一种错误
               group.Select(Function(i) i.errorString).Distinct().Count() = 2
           End Function)
    .Select(Function(group) group.Key) ' 提取符合条件的请求编号
    .ToList() ' 转成List(Of String),和你原来的变量类型一致

代码逻辑解释

  • GroupBy:把所有错误记录按请求编号归类,这样每个分组就是同一个请求下的所有错误条目
  • Where筛选:对每个分组,先提取所有错误字符串并去重(Distinct()),然后统计去重后的数量是否等于2——这一步确保我们找的是恰好两种不同错误,而不是错误条目数为2(避免同一种错误出现两次的情况)
  • Select提取:从符合条件的分组里取出请求编号(也就是分组的Key)
  • ToList():转换成你需要的List(Of String)类型,和你原来的变量requestWithMultipleErrors类型匹配

如果你要的是错误条目数为2(不管错误是否重复)

如果你的需求是错误条目总数为2(哪怕是同一种错误出现两次),那可以去掉Distinct(),改成:

Dim requestWithTwoErrorEntries = requestErrorList
    .GroupBy(Function(item) item.requestNumber)
    .Where(Function(group) group.Count() = 2)
    .Select(Function(group) group.Key)
    .ToList()

不过看你说的预期结果是1和6,应该是第一种「恰好两种不同错误」的场景~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:53:44