微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用谓词构建器返回满足某些搜索条件的活动用户?

如何解决如何使用谓词构建器返回满足某些搜索条件的活动用户?

我正在使用custom serializer构建动态EF谓词。

我想返回其名字或姓氏与请求的搜索词匹配的所有活动用户。这是我尝试过的方法,但我总是会得到所有活动用户...这意味着搜索不会被搜索词缩小范围:

string searchTerm = "John"; // <-- comes from user
predicate = predicate.And(u => u.IsActive == true);

if (!string.IsNullOrEmpty(searchTerm))
{
    predicate = predicate.Or(u => u.FirstName.Contains(searchTerm));
    predicate = predicate.Or(u => u.LastName.Contains(searchTerm));
}

解决方法

将您的逻辑分解为一个简单的布尔表达式-

x = IsActive == true
y = FirstName match
z = LastName match

您的逻辑是x or y or z。如果用户处于活动状态,他们将返回。

您想要x and (y or z)。在您的if语句中,类似-

predicate = predicate.And(u => u.FirstName.Contains(searchTerm) || u.LastName.Contains(searchTerm));

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。