我想使用 linq 从数据库获取查询,但每次都返回 null 或空;var user = await _identityDb.Users.FirstOrDefaultAsync(u => u.UserName == user.UserName); // this return null but user exist even in debuger
var users = _identityDb.Users.Where(u => u.UserName == user.UserName); // this return emptyupdate 这返回用户var users = _identityDb.Users.Where(u => u.UserName == u.UserName.ToString());但这返回空var users = _identityDb.Users.Where(u => u.UserName == user.UserName.ToString());
3 回答
紫衣仙女
TA贡献1839条经验 获得超15个赞
==
区分大小写。
如果要比较两个字符串不区分大小写,则应该使用String.Equals
接受 a的重载StringComparison
:
var users = _identityDb.Users .Where(u => u.UserName .Equals(user.UserName, StringComparison.OrdinalIgnoreCase);
慕田峪4524236
TA贡献1875条经验 获得超5个赞
显然每个人User
都有财产UserName
。可惜您忘了告诉我们房产的类型。由于标识符的名称以及与字符串的比较,我假设它UserName
是一个字符串。
如果UserName
已经是一个字符串,为什么还要比较它UserName.ToString()
?
以下命令返回用户 DbSet 中值为UserName
、 等于 的所有用户UserName.ToString
:
var users = _identityDb.Users.Where(u => u.UserName == u.UserName.ToString());
因为UserName
是一个字符串,UserName.ToString()
所以永远等于UserName
。在这种情况下,查询将返回所有Users
.
现在你似乎有了一个user
class对象User
。我们不知道这是否user
是User
您收藏的_identityDb.Users
。
以下将返回_identityDb.Users
UserName 等于的所有用户user.UserName
var users = _identityDb.Users.Where(u => u.UserName == user.UserName);
如果user
在里面_identityDb.Users
你肯定会找到至少一个User
有这个名字的,甚至可能不止一个。如果您仍然找不到,请尝试通过键入用户名进行调试:
string userName = user.UserName; var users = _identityDb.Users.Where(u => u.UserName == userName);
最后一种可能性:可能UserName
不是字符串,或者您定义了自己的ToString()
. 如果您省略了此信息,那么我的建议是花一些时间学习如何正确提问。
- 3 回答
- 0 关注
- 130 浏览
添加回答
举报
0/150
提交
取消