从MembershipUserCollection中获取单个MembershipUser

 2023-02-17    353  

问题描述

我正在通过编码示例应用来学习ASP.NET MVC3 EF4.我正在使用标准的会员提供商.我在会员提供商中有ReaseUniqueEmail =”True”,所以每占位提供者不超过1封电子邮件.

我想通过他们的电子邮件地址找到特定的用户.有一个功能有助于:

从MembershipUserCollection中获取单个MembershipUser

MembershipUserCollection users = Membership.FindUsersByEmail(model.Email);

因为我有唯一的电子邮件,我如何从empersimusercollection获取empersialuser?我知道我可以做一个foreach循环:

foreach (MembershipUser user in users)
{
username = user.UserName;
}

但是有没有更快的方式访问第一行?

这不起作用:empersehuser用户=用户[0];

但这是我正在寻找的.

谢谢!!

更新:这是作品,但我仍然对上面的答案感兴趣:

string username1 = Membership.GetUserNameByEmail(model.Email);
MembershipUser user = Membership.GetUser(username1);

推荐答案

因为您对每个用户都有唯一的电子邮件,为什么您使用MembershipUserCollection类

相反,您可以使用

直接获取它

string userName = Membership.GetUserNameByEmail(model.Email);

    MembershipUser oMu = Membership.GetUser(userName);

oMu对象将为您提供在GetUserNameByEmail(model.Email)

中传递的电子邮件地址的所有属性

编辑基于问题的更新

我认为加载一个只有单个记录的集合无关紧要,与字符串用户名(在我的示例中使用)相比,内存消耗将更多地,并且您在查找单个记录时存在问题(您在哪里使用循环,不必要的延迟获取细节).另外还减少了代码行(编译代码变得更加简单,更快.)

其他推荐答案

尝试使用First() linq扩展方法,如下所示:

using System.Linq;
...
var user = Membership.FindUsersByEmail(model.Email).Cast<MembershipUser>.First();

(如果您碰巧使用一个),也可能投入到您的自定义MembershipUser子类).

以上所述是小编给大家介绍的从MembershipUserCollection中获取单个MembershipUser,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/34108.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。