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

如何在VB.Net中使用LINQ实现带IN条件的去重用户数统计查询?

将指定SQL转换为VB.NET LINQ查询及IN条件处理方法

没问题,我来帮你把这段SQL转换成VB.NET的LINQ查询,同时把IN条件的通用处理方式也讲清楚~

首先先看你的目标SQL:

Select Count(Distinct(User_ID)) from tbl_CTRL where Req_ID = "R1" AND User_ID in ('001','002','004','005')

假设你在VB.NET里已经有对应的数据实体类(比如用EF自动生成的实体,或者自己定义):

Public Class CtrlRecord
    Public Property User_ID As String
    Public Property Req_ID As String
End Class

并且有对应的数据源(比如List(Of CtrlRecord)或者EF的DbSet(Of CtrlRecord),这里统一叫tbl_CTRL)。

实现目标查询的LINQ代码

你可以用方法语法或者查询语法来实现,两种写法效果一致:

方法语法

' 先定义需要筛选的User_ID集合
Dim targetUserIds As New List(Of String) From {"001", "002", "004", "005"}

' 计算去重后的符合条件的User_ID数量
Dim countResult = tbl_CTRL.Where(Function(record) 
                                    record.Req_ID = "R1" AndAlso targetUserIds.Contains(record.User_ID)
                                 End Function) _
                          .Select(Function(record) record.User_ID) _
                          .Distinct() _
                          .Count()

查询语法

Dim targetUserIds As New List(Of String) From {"001", "002", "004", "005"}

Dim countResult = (From record In tbl_CTRL
                   Where record.Req_ID = "R1" AndAlso targetUserIds.Contains(record.User_ID)
                   Select record.User_ID).Distinct().Count()

运行这段代码后,countResult的值会是2,和你预期的结果一致——因为符合Req_ID = 'R1'且在指定User_ID列表里的唯一用户是001和004。

LINQ中处理IN条件的通用方法

SQL里的IN ('ID1','ID2',...)在LINQ里对应的就是集合的Contains方法,步骤很简单:

  1. 把需要匹配的所有值放到一个集合里(推荐用HashSet(Of T),数据量大时查询性能比List更好);
  2. 在LINQ的Where条件里,用集合.Contains(字段名)来判断字段是否在目标集合中。

举个通用例子:

' 定义要匹配的ID集合
Dim targetIds As New HashSet(Of String) From {"ID1", "ID2", "ID3", "ID4"}

' 筛选出字段值在集合中的数据
Dim filteredData = From item In yourDataSource
                   Where targetIds.Contains(item.TargetField)
                   Select item

这样就能完美实现SQL中IN条件的逻辑啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 14:12:41