我正在尝试从我的数据库中过滤用户列表。
当我运行这个 LINQ to Entity 命令时,它可以像我希望的那样工作。它返回所有用户,按以下内容过滤txtFilterBy_UserName
:
(注意我直接访问 db 表。还有几个字段要过滤,但我在这个例子中只包括用户名)
users = db.Users
.Where(u => u.IsActive == true &&
u.UserName.ToLower()
.Contains((txtFilterBy_UserName.Value.Length > 0) ?
u.UserName.ToLower() :
txtFilterBy_UserName.Value.ToLower()))
.ToList();
但是......在某些情况下,我已经_users
在过滤之前填充了我的用户集合(),我希望能够做到这一点:
users = _users.Where(u => u.IsActive == true &&
u.UserName.ToLower()
.Contains((txtFilterBy_UserName.Value.Length > 0) ?
u.UserName.ToLower() :
txtFilterBy_UserName.Value.ToLower()))
.ToList();
但是这种方法总是返回 0 个用户,谁能告诉我我做错了什么,或者为什么这种过滤用户集合的方法不起作用?
假设我的数据库中有 100 个用户,其中 6 个用户的用户名中包含字符“john”。当我直接查询数据库时 - 我返回 6 个用户。如果用户集合对象已经填充(有 100 个用户)并且我尝试过滤集合 - 返回 0 个用户