2012-04-26 85 views
0

我在我的web應用程序中使用了ASP.NET成員資格,並且我使用了GetAllUsers方法來列出用戶,但是此方法返回按UserName排序的列表,我想要命令它再見CrateDate我資助存儲過程中我的SQL,但我不知道如何修改或編輯:( 這是我GetAllUsers存儲過程的代碼:如何修改ASP.NET MEmbership存儲過程

USE [MoftakiDB] 
GO 
/****** Object: StoredProcedure [dbo].[aspnet_Membership_GetAllUsers] Script Date: 04/26/2012 14:24:14 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER OFF 
GO 
ALTER PROCEDURE [dbo].[aspnet_Membership_GetAllUsers] 
    @ApplicationName  nvarchar(256), 
    @PageIndex    int, 
    @PageSize    int 
AS 
BEGIN 
    DECLARE @ApplicationId uniqueidentifier 
    SELECT @ApplicationId = NULL 
    SELECT @ApplicationId = ApplicationId FROM dbo.aspnet_Applications WHERE LOWER(@ApplicationName) = LoweredApplicationName 
    IF (@ApplicationId IS NULL) 
     RETURN 0 


    -- Set the page bounds 
    DECLARE @PageLowerBound int 
    DECLARE @PageUpperBound int 
    DECLARE @TotalRecords int 
    SET @PageLowerBound = @PageSize * @PageIndex 
    SET @PageUpperBound = @PageSize - 1 + @PageLowerBound 

    -- Create a temp table TO store the select results 
    CREATE TABLE #PageIndexForUsers 
    (
     IndexId int IDENTITY (0, 1) NOT NULL, 
     UserId uniqueidentifier 
    ) 

    -- Insert into our temp table 
    INSERT INTO #PageIndexForUsers (UserId) 
    SELECT u.UserId 
    FROM dbo.aspnet_Membership m, dbo.aspnet_Users u 
    WHERE u.ApplicationId = @ApplicationId AND u.UserId = m.UserId 
    ORDER BY u.UserName 

    SELECT @TotalRecords = @@ROWCOUNT 

    SELECT u.UserName, m.Email, m.PasswordQuestion, m.Comment, m.IsApproved, 
      m.CreateDate, 
      m.LastLoginDate, 
      u.LastActivityDate, 
      m.LastPasswordChangedDate, 
      u.UserId, m.IsLockedOut, 
      m.LastLockoutDate 
    FROM dbo.aspnet_Membership m, dbo.aspnet_Users u, #PageIndexForUsers p 
    WHERE u.UserId = p.UserId AND u.UserId = m.UserId AND 
      p.IndexId >= @PageLowerBound AND p.IndexId <= @PageUpperBound 
    ORDER BY u.UserName 
    RETURN @TotalRecords 
END 
+0

我建議現在改變sp,但最好讓你的代碼從你的代碼中調用,以獲得你想要的。你永遠不知道其他人認爲你可能會有什麼影響,或者在任何更新中,這個詞可能會不同 – Aristos 2012-04-26 10:40:01

回答

1

這是一個普通的存儲過程,這樣你就可以ALTER PROCEDURE修改它就像用任何其他SP

但是我會建議反對它SP這是成員的一部分IP提供商,你不知道代碼所做的假設。改變順序可能會破壞會員制度的某些關鍵部分。

最好是讓所有的用戶和使用linq OrderBy運算符重新排列存儲器中返回的序列。因爲集合(MembershipUserCollection)僅實施非通用IEnumerable接口

var users = Membership.GetAllUsers().Cast<MembershipUser>() 
      .OrderBy(mu => mu.CreationDate); 

演員是必需的。

+0

我用這個,但我得到錯誤,VS可以不知道OrderBy: - ?我有和.OrderBy – 2012-04-26 10:43:49

+0

下的紅線,感謝真正的語法:var users = Membership.GetAllUsers()。Cast () .OrderBy(mu => mu.CreationDate); – 2012-04-26 10:45:00