开箱,系统。网。安全。会员国实现一对夫妇的搜索方法:

  • FindUsersByEmail
  • FindUsersByName

我在使用 WSAT项目从更 来管理我的成员数据库。该工具实现了额外的配置文件中的属性ProfileCommon类。

让我们说有一个所谓的酒店 公司 在用户配置文件。

我需要实现一个定制搜索方法搜索的公司的财产,和我想做这个都在代码。不想写一个存储程序(由于所有特性都存储在数据库1列在WSAT工具)。

像这样的东西显然不是正确的方式做到这一点,但这里它是只是证明访问的用户配置文件的性质:

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

我可以把它变成一些皇宫善?

有帮助吗?

解决方案 2

得到了一些帮助从一个同事的良好与皇宫.这里的挑战是,MembershipUserCollection没有实现综合< T>(!).

        List<MembershipUser> searchResults = allUsers.Where(user => 
        Profile.GetProfile(user.UserName).Firm.ToLowerInvariant()
        .Contains(firmName.ToLowerInvariant())).ToList();

在这种情况下allUsers是一个列表,我必须填入该项目的成员。GetAllUsers()收集。

其他提示

好的你就不能把它?

IEnumerable<MembershipUser> searchResults = Membership.GetAllUsers().Cast<MembershipUser>();

希望这可以帮助你们

仅供记录我创造了这个扩展方法,我认为它有点工作:

namespace WebDibaelsaMVC.Utils.MembershipUserCollectionExtensions
{
    public static class MembershipUserCollectionExtensions
    {
        public static IEnumerable<MembershipUser> Where(this MembershipUserCollection userCollection,Func<MembershipUser,bool> func)
        {
            foreach (MembershipUser membershipUser in userCollection)
            {
                 if (func(membershipUser))
                    yield return membershipUser;
            }
        }
    }
}

它还将 MembershipUserCollection 来一个 IEnumerable<MembershipUser> 因此,所有其他的皇宫方法的工作之后。

没有建立在功能由微软公司提供。这里是例的搜索的成员资格的用户与用户名和电子邮件地址
例如:
只是复制下的功能,并执行它做的...

Public List<MembershipUser> SearchMembershipUser(string strUserName, String strEmail)
        {           
            IEnumerable<MembershipUser> MUser;
            if ((!string.IsNullOrEmpty(strUserName) || !string.IsNullOrEmpty(strEmail)))
            {
                if (!string.IsNullOrEmpty(strUserName) && !string.IsNullOrEmpty(strEmail))
                {
                    MUser = Membership.GetAllUsers().Cast<MembershipUser>()
                        .Where(x => x.UserName != CurrentUser && x.UserName == strUserName && x.Email == strEmail);
                }
                else if (!string.IsNullOrEmpty(strUserName))
                {
                    MUser = Membership.GetAllUsers().Cast<MembershipUser>()
                        .Where(x => x.UserName != CurrentUser && x.UserName == strUserName);
                }
                else
                {
                    MUser = Membership.GetAllUsers().Cast<MembershipUser>()
                        .Where(x => x.UserName != CurrentUser && x.Email == strEmail);
                }
            }
            else
            {
                MUser = Membership.GetAllUsers().Cast<MembershipUser>().Where(x => x.UserName != CurrentUser);
            }
            return MUser.OrderBy(x => x.UserName).ToList();
        }
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top