I am using Membership.GetAllUsers() to get my user list. I would like to have the list returned sorted by email address as I need to flag some accounts with duplicate emails.
Membership.GetAllUsers() seems to order by username by default. Is there a way to change this behavior?
If you can live with a generic list rather than a
MembershipUserCollection
:Use
OrderBy(x => x.Email, StringComparer.OrdinalIgnoreCase)
if you want a case-insensitive sort of the email address.Membership code actually predates generics (it was integrated into .NET 2.0 from a .NET 1.1 development), hence
MembershipUserCollection
does not implement generic interfaces.Given your earlier question, you may be interested in other LINQ-style manipulations. For example the following will give you a dictionary whose keys are email addresses (case-insensitive), and whose values are lists of corresponding
MembershipUser
objects, sorted by last activity date descending:The following code should do it, but it may not have the best performance.
It does the sorting in memory, rather than as a db query.