首页 / 知识

关于.net:抓取用户个人资料中具有特定值的用户

2023-04-16 03:17:00

关于.net:抓取用户个人资料中具有特定值的用户

Grabbing Users with a specific value in their profile

我在vb .net应用程序中使用成员身份和角色进行身份验证。在应用程序中,我们大约有5个角色,其中某些角色填写了特定的配置文件值。例如,角色是商店,配置文件值是商店编号。显然,如果您在总部工作,则没有门店号码,所以我不在乎。每个商店也可以拥有1名以上的员工。

我需要让用户获得特定的商店编号。这意味着我只希望属于商店编号101的用户显示该列表。我们现在这样做的方式是遍历所有用户,并将符合条件的用户添加到排序列表中。此功能起作用,但问题是当您开始传递大约3,000个用户时。做任何事情都会变得缓慢。

你们将如何找到一种不同的方式呢?我真的不想做自定义存储过程或更改基础类,因为我担心这会在更高版本的.net上中断,因为它们会更改成员资格和角色。


这确实是您要在SQL中进行过滤的一种东西。 我认为没有任何技巧可以绕过数据的线性扫描并获得所需的结果。

如果无法在SQL中执行此操作,那么也许可以避免创建第二个列表,而仅对主用户数组进行排序,并使显示内容仅显示您关注的列表。 这样至少可以节省内存复制时间。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    Public Shared Function LoadALLUsersInRole(ByVal Code As Integer, ByVal Role As String) As ArrayList
        Dim pb As ProfileBase
        Dim usersArrayList As New ArrayList
        Dim i As Integer
        Dim AllUsersInRole() As String = Roles.GetUsersInRole(Role)

        For i = 0 To AllUsersInRole.Length - 1

            pb = ProfileBase.Create(AllUsersInRole(i), True)

            'Check to see if the current user in the collect belongs to this Store.
            If CType(pb.GetPropertyValue("Store.Code"), Integer) = Code Then                    
                    usersArrayList.Add(AllUsersInRole(i))                  
            End If
            pb = Nothing
        Next

        Return usersArrayList
    End Function

那是我如何做的示例代码。 我不想在SOL方面这样做的原因是,我将非常依赖成员资格和角色不变的事实。


您使用的是内置的.NET角色管理器,我将其保存到SQL Server实例中了吗? 当前正在查看用户对象以评估条件时,用户对象使用什么格式? 如果您发布代码示例,我有个主意...


用户应用程序商店配置文件

最新内容

相关内容

猜你喜欢