按日期降序获取被禁用户的列表

时间:2011-02-27 12:56:33

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

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

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);
}

我怎样才能获得被禁止的被禁用用户列表。 最近被禁止的应该是第一个。

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:2)

默认情况下,asp.net会员资格不存储此日期,因此您必须使用变通方法。一个简洁的方法是引入自己的表,但我建议滥用LastLoginDate。只要用户没有正确登录(您的!已批准将阻止发生),默认机制将不会触及此日期。

用于阻止用户的修改代码:

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);
}