在 C# 中筛选字符串的子列表

本文关键字:列表 字符串 筛选 | 更新日期: 2023-09-27 18:34:31

>我有一个看起来像这样的对象

class MyObject
{
    string Name;
    string Description;
    List<string> Keywords;
}

当我搜索这些时,我有一个List<MyObject> AllObjects,我想根据Keywords过滤

var query = Request["q"];
//will only return exact matches
var exactHits = GetAll().Where(x => x.Keywords.Contains(query));
//I want something like this
var searchHits = GetAll().Where(x => x.Keywords.Contains(Regex.Match(query)));

在 C# 中筛选字符串的子列表

Regex reg = new Regex(query);
var searchHits = GetAll().Where(x => x.Keywords.Any(k => reg.IsMatch(k)));

不是 100% 确定 Regex.Match 语法,但它应该是这样的:

var searchHits = GetAll().Where(x => x.Keywords.Any( k => Regex.Match(k, query).Success));

这将返回至少有一个关键字与查询正则表达式匹配的所有MyObject