我正在尝试从我的数据库中筛选用户列表。
当我运行这个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个用户。