题
开箱,系统。网。安全。会员国实现一对夫妇的搜索方法:
- 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();
}
不隶属于 StackOverflow