首页 > 后端开发 > C++ > 如何使用 Lambda/LINQ 在评论列表中搜索多个关键字?

如何使用 Lambda/LINQ 在评论列表中搜索多个关键字?

Barbara Streisand
发布: 2025-01-21 12:13:09
原创
883 人浏览过

How Can I Use Lambda/LINQ to Search for Multiple Keywords in a List of Comments?

使用包含条件的Lambda/LINQ进行多关键字搜索

本指南演示如何同时在评论列表中搜索多个关键字。虽然针对单个关键字搜索的示例很多,但本指南提供了一种一次性搜索任何关键字实例的解决方案。

实现此目标,可以采取以下步骤:

  1. 创建扩展方法:
public static class QueryableExtensions
{
    public static IQueryable<T> FilterByItems<T, TItem>(this IQueryable<T> query, IEnumerable<TItem> items,
        Expression<Func<T, TItem, bool>> filterPattern, bool isOr)
    {
        // ... 方法实现 ...
    }
}
登录后复制
  1. 使用方法:
var newList = MainList
    .FilterByItems(keywords, (m, k) => m.Comments.Contains(k), true)
    .ToList();
登录后复制

此处,FilterByItems 方法生成一个执行所需过滤的谓词。keywords 参数表示搜索词列表,提供的 lambda 表达式检查 Comments 字段是否包含任何这些关键字。isOr 参数决定过滤是逻辑 OR(任何关键字匹配)还是逻辑 AND(所有关键字匹配)。

  1. 扩展方法实现:

FilterByItems 方法通过循环遍历关键字来构建谓词。它用每个关键字替换提供的 lambda 表达式中的参数,为每个关键字创建一个单独的条件。最后,它根据 isOr 值使用 OR 或 AND 组合这些条件,创建一个可以应用于查询的单个谓词。

  1. 表达式替换的辅助类:

ExpressionReplacer 类用于替换 lambda 表达式中的表达式。它以表达式字典作为输入,并修改原始表达式,替换与字典中匹配的表达式。这允许根据提供的关键字动态修改谓词。

通过这种方法,可以使用 Lambda/LINQ 语法有效且高效地在评论中搜索多个关键字。

以上是如何使用 Lambda/LINQ 在评论列表中搜索多个关键字?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板