在asp.net实体框架中通过电子邮件查找列
本文关键字:电子邮件 查找 asp net 实体 框架 | 更新日期: 2023-09-27 18:08:24
我想写忘记密码作为培训,现在我有一个问题。
我需要找到一个userId,但我的代码目前不工作,它告诉我SQL代码。
这是我的代码:
private string NewPass()
{
UserManager<IdentityUser> userManager =
new UserManager<IdentityUser>(new UserStore<IdentityUser>());
string userId = (from x in db.AspNetUsers
where x.Email == txtEmail.Text
select x.Id).ToString();
return userId;
}
我有一个电子邮件地址,现在我想通过电子邮件地址
找到userId但是我说过,我的代码只显示了SQL语句,而不是我想要的列的值
我的代码有什么问题?
与
问题是:这个语句可以返回多行:
from x in db.AspNetUsers
where x.Email == txtEmail.Text
select x.Id
所以你不能直接把它转换成字符串
你需要做的是:
- 从结果集 中选择第一行(或者可能是唯一一行)
- 确保它不是NULL
- 则返回
Id
试试这个:
var users = (from x in db.AspNetUsers
where x.Email == txtEmail.Text
select x).FirstOrDefault();
string userId = string.Empty;
if (users != null)
{
userId = users.Id;
}
return userId;
您将返回。tostring(),它显示了LINQ查询背后的SQL。
获取用户对象,然后访问它的ID,就像这样(根本没有测试):
private string NewPass()
{
UserManager<IdentityUser> userManager =
new UserManager<IdentityUser>(new UserStore<IdentityUser>());
/// Fetch the user object
IdentityUser user = (from x in db.AspNetUsers
where x.Email == txtEmail.Text
select x).SingleOrDefault();
return user != null ? user.Id : String.Empty;
}
您将返回。tostring(),它显示了LINQ查询背后的SQL。
private string NewPass()
{
UserManager<IdentityUser> userManager =
new UserManager<IdentityUser>(new UserStore<IdentityUser>());
IdentityUser user = (from x in db.AspNetUsers
where x.Email == txtEmail.Text
select x).FirstOrDefault();
if(user !=null)
return user.Id;
}
Try This:
var x = from data in _db.AspNetUsers.AsQueryable()
where data.Email == txtEmail.Text select data.Id;
if (x.Any())
{
// do your opertion
}