0

过去,当我们需要排除属于某个类别的成员时,我们使用 generic.list 控件来执行此操作,如下例所示:

首先,我们进行查询以列出所有符合特定条件的合格用户。

sql="select ... from ourTable where certain conditions are true'

然后,我们在下面的列表中列出某些组,并且该组在该列表中的任何用户都将被排除在参与之外。

        Dim listOfGroups = New List(Of String)(
         { _
              "ML02A", "ML02B", "ML03", "ML04", "ML05", "ML06", "ML07A", "ML07B", "AP05", _
             "AP06", "AP07A", "AP07B", "AP09A", "AP10", "AP12A" _
        })

        If Not listOfGroups .Contains(txtPre.Text) Then
            lblNA.Text = "Members in group<b>" & txtPre.Text & "</b> are not eligible to participate in this event."
        End If

这对我们来说总是很有效。

这一次,名单远远超过 200,000;太多,无法手动包含在下面的列表中。

是否可以将列表与 SQL Server 数据库集成?

或者,有没有办法使用存储过程并通过我们的 asp.net 应用程序发出相同的排除消息来处理这个问题?

我们的应用程序是用 vb.net 编写的,但对于任何可以转换为 vb.net 的 c# 解决方案,我都会感到非常高兴

generic.list控件可以像sql server中的通配符一样使用吗?

例如,在 SQL Server 中,我们可以说,如果 group LIKE 'KT%' then message.

可以在 generic.list 控件中使用 LIKE 吗?提前非常感谢。

4

1 回答 1

0

我试着用我的方式来阐述问题:
你有一个像这样的查询

select * form TableName where Field in ('ML02A', 'ML02B', 'ML03', ...)

由于未指定的原因,该组值位于数据库中的程序号中,并且列表很长,导致查询速度变慢。

对于类似的情况,我正在使用临时表和SqlBulkCopy Class。(代码应该在编号列表之后,但格式不正确)。

Dim BulkData As SqlBulkCopy
BulkData = New SqlBulkCopy(cn)
BulkData.DestinationTableName = mDBTableName
BulkData.WriteToServer(mTableToTransfer)
  1. 为数据创建一个表mDBTableName(对于服务器缓存的利用,永久的比临时的要好 -#)
  2. 创建一个DataTable具有相同结构的
  3. 将数据从listDataTable mTableToTransfer
  4. 传输到服务器
  5. 运行与表连接的查询

如果表结构不匹配,则可以使用BulkData.ColumnMappings.Add

于 2013-10-11T14:52:31.467 回答