【发布时间】:2013-06-20 10:06:06
【问题描述】:
我正在尝试从我的数据库中过滤用户列表。
当我运行这个 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 个用户
【问题讨论】:
标签: c# linq linq-to-entities