C#Asp.net Membership.GetAllUsers通过电子邮件订购
我正在使用Membership.GetAllUsers()来获取我的用户列表。 我希望按电子邮件地址排序返回列表,因为我需要标记一些带有重复电子邮件的帐户。
Membership.GetAllUsers()似乎默认按用户名排序。 有没有办法改变这种行为?
如果您可以使用通用列表而不是MembershipUserCollection
:
Membership.GetAllUsers().Cast().OrderBy(x => x.Email).ToList();
如果您想要一个不区分大小写的电子邮件地址OrderBy(x => x.Email, StringComparer.OrdinalIgnoreCase)
请使用OrderBy(x => x.Email, StringComparer.OrdinalIgnoreCase)
。
成员资格代码实际上早于generics(它从.NET 1.1开发集成到.NET 2.0中),因此MembershipUserCollection
不实现通用接口。
鉴于您之前的问题 ,您可能对其他LINQ风格的操作感兴趣。 例如,下面的代码将为您提供一个字典,其键是电子邮件地址(不区分大小写),其值是相应的MembershipUser
对象的列表,按上次活动日期降序排序:
var dictionary = Membership.GetAllUsers().Cast() .GroupBy(x => x.Email, StringComparer.OrdinalIgnoreCase) .ToDictionary( x => x.Key, x =>x.OrderByDescending(u => u.LastActivityDate).ToList() );
以下代码应该这样做,但它可能没有最佳性能。
Membership.GetAllUsers().Cast().OrderBy(m => m.Email);
它在内存中进行排序,而不是作为db查询。
Membership.GetAllUsers().OrderBy(user => user.Email).ToList();