在 asp.net Entity Framework 中通过电子邮件查找专栏
Find a column by email in asp.net Entity Framework
我想写忘记密码作为培训,现在我遇到了问题。
我需要找到一个 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 语句,而不是我想要的列的值
我的代码有什么问题?
尊重
您正在返回 .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;
}
嗯,问题是:这个语句 可以 return 多行:
from x in db.AspNetUsers
where x.Email == txtEmail.Text
select x.Id
所以你不能只将其转换为字符串。
您需要做的是:
- select 结果集中的第一行(或可能唯一的一行)
- 确保它不是 NULL
- 然后 return
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。
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;
}
试试这个:
var x = from data in _db.AspNetUsers.AsQueryable()
where data.Email == txtEmail.Text select data.Id;
if (x.Any())
{
// do your opertion
}
我想写忘记密码作为培训,现在我遇到了问题。
我需要找到一个 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 语句,而不是我想要的列的值
我的代码有什么问题?
尊重
您正在返回 .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;
}
嗯,问题是:这个语句 可以 return 多行:
from x in db.AspNetUsers
where x.Email == txtEmail.Text
select x.Id
所以你不能只将其转换为字符串。
您需要做的是:
- select 结果集中的第一行(或可能唯一的一行)
- 确保它不是 NULL
- 然后 return
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。
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;
}
试试这个:
var x = from data in _db.AspNetUsers.AsQueryable()
where data.Email == txtEmail.Text select data.Id;
if (x.Any())
{
// do your opertion
}