public static List<UserProfile> GetCreditUserProfileSearch(string searchTerm)
{
List<UserProfile> usrs = null;
List<string> admins = null;
List<string> editors = null;
using (CarrotCMSDataContext _db = CarrotCMSDataContext.Create()) {
admins = (from ur in _db.membership_UserRoles
join u in _db.membership_Users on ur.UserId equals u.Id
join r in _db.membership_Roles on ur.RoleId equals r.Id
join ud in _db.carrot_UserDatas on u.Id equals ud.UserKey
where r.Name == CMSGroup_Admins
select ud.UserKey).ToList();
editors = (from sm in _db.carrot_UserSiteMappings
join ud in _db.carrot_UserDatas on sm.UserId equals ud.UserId
where sm.SiteID == SiteData.CurrentSiteID
select ud.UserKey).ToList();
usrs = (from u in _db.membership_Users
join ud1 in _db.carrot_UserDatas on u.Id equals ud1.UserKey into ud2
from ud in ud2.DefaultIfEmpty()
where (u.UserName.Contains(searchTerm)
|| u.Email.Contains(searchTerm))
&& admins.Union(editors).Contains(u.Id)
select new UserProfile(u, ud)).Take(50).ToList();
}
return usrs;
}