Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to best implement custom search on a Membership provider

Tags:

Out of the box, System.Web.Security.Membership implements a couple of search methods:

  • FindUsersByEmail
  • FindUsersByName

I'm using the WSAT project from CodePlex to administer my Membership database. The tool implements extra profile properties in a ProfileCommon class.

Let's say I have a property called Firm in the user's profile.

I need to implement a custom search method to search on the Firm property, and I would like to do this all in code. Don't wanna write a stored procedure (since all the profile properties are stored in 1 database column in the WSAT tool).

Something like this obviously isn't the right way to do it, but here it is to just demonstrate accessing the user's profile properties:

    private MembershipUserCollection SearchByFirm(string firmName, MembershipUserCollection allRegisteredUsers)
{
    MembershipUserCollection searchResults = new MembershipUserCollection();

    foreach (MembershipUser user in allRegisteredUsers)
    {
        ProfileCommon profile = Profile.GetProfile(user.UserName);
        if (profile.Firm.ToLowerInvariant().Contains(firmName.ToLowerInvariant()))
        {
            searchResults.Add(user);
        }
    }
    return searchResults;
}

Can I turn this into some LINQ goodness?