【问题标题】:Get a list of banned users by date descending按日期降序获取被禁用户列表
【发布时间】:2011-02-27 12:56:33
【问题描述】:

我正在做这样的事情来获取所有已被阻止的用户的列表:

public IQueryable<Aspnet_User> GetBannedUsers()
{
    return db.Aspnet_Memberships.Where(x => x.IsApproved == false).Select(x => x.Aspnet_User);
}

我这样做是为了阻止用户:

MembershipUser user = Membership.GetUser(username);
if (user != null)
{
    user.IsApproved = isApproved;
    Membership.UpdateUser(user);
}

我如何获得按日期排序的被禁止用户列表。 最近被禁止的应该是第一个。

【问题讨论】:

    标签: c# asp.net linq linq-to-sql asp.net-membership


    【解决方案1】:

    默认情况下,asp.net 成员资格不存储此日期,因此您必须使用解决方法。一种简洁的方法是引入您自己的表格,但我建议滥用 LastLoginDate。只要用户未正确登录(您的 !isApproved 将阻止这种情况发生),默认机制就不会触及此日期。

    修改代码以阻止用户:

    MembershipUser user = Membership.GetUser(username);             
    if (user != null)             
    {                 
      user.IsApproved = isApproved;
      user.LastLoginDate = DateTime.Now;
      Membership.UpdateUser(user);             
    }
    

    按禁止日期排序的代码,复制粘贴自@Femaref 的答案:

    public IQueryable<Aspnet_User> GetBannedUsers()            
    { 
      return db.Aspnet_Memberships          
        .Where(x => x.IsApproved == false)                        
        .OrderByDescening(x => x.LastLoginDate) 
        .Select(x => x.Aspnet_User);
    }
    

    【讨论】:

      【解决方案2】:
      public IQueryable<Aspnet_User> GetBannedUsers()
      {
          return db.Aspnet_Memberships
                   .Where(x => x.IsApproved == false)
                   .OrderByDescening(x => x.BannedDate) //adjust property here
                   .Select(x => x.Aspnet_User);
      }
      

      【讨论】:

      • 我正在使用 sql 成员资格提供程序,那么我在哪里引入禁止日期?我应该将它直接添加到表 Aspnet_Memberships 中,还是弄乱“开箱即用”表的坏习惯?
      • 不知道,我以为这包括在内?我会介绍一个带有会员 ID 和 BannedDate 的新表。
      猜你喜欢
      • 1970-01-01
      • 2013-06-17
      • 1970-01-01
      • 1970-01-01
      • 2014-05-14
      • 1970-01-01
      • 1970-01-01
      • 2020-02-08
      相关资源
      最近更新 更多