亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

DbSet<User>.Where() 始終返回 null EFCore2.2

DbSet<User>.Where() 始終返回 null EFCore2.2

C#
慕村225694 2023-07-09 09:44:53
我想使用 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);


查看完整回答
反對 回復 2023-07-09
?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

顯然每個人User都有財產UserName??上烁嬖V我們房產的類型。由于標識符的名稱以及與字符串的比較,我假設它UserName是一個字符串。

如果UserName已經是一個字符串,為什么還要比較它UserName.ToString()?

以下命令返回用戶 DbSet 中值為UserName、 等于 的所有用戶UserName.ToString

var users = _identityDb.Users.Where(u => u.UserName == u.UserName.ToString());

因為UserName是一個字符串,UserName.ToString()所以永遠等于UserName。在這種情況下,查詢將返回所有Users.

現在你似乎有了一個userclass對象User。我們不知道這是否userUser您收藏的_identityDb.Users。

以下將返回_identityDb.UsersUserName 等于的所有用戶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(). 如果您省略了此信息,那么我的建議是花一些時間學習如何正確提問。


查看完整回答
反對 回復 2023-07-09
?
飲歌長嘯

TA貢獻1951條經驗 獲得超3個贊

問題是因為我使用了某種加密方法。所以SQLServer無法處理它。我剛剛刪除了用戶名列上的加密。



查看完整回答
反對 回復 2023-07-09
  • 3 回答
  • 0 關注
  • 174 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號