You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用C# LINQ将匹配关键词存入列表对象的KeywordMatched属性?

实现匹配关键词存入KeywordMatched属性的方法

假设你的基础类结构如下:

public class CsvLogData
{
    public string SiteUrl { get; set; }
    public string SiteTitle { get; set; }
    public string KeywordMatched { get; set; } // 若需存储多个匹配关键词,可改为List<string>
}

public static class CsvList
{
    public static List<CsvLogData> Logs { get; set; } = new List<CsvLogData>();

    public static List<CsvLogData> FilterList(List<string> keywords)
    {
        // 在此实现过滤与关键词赋值逻辑
    }
}

场景1:存储第一个匹配的关键词

遍历日志列表,检查每个项的SiteUrl或SiteTitle是否包含关键词列表中的任意关键词,找到第一个匹配项后赋值给KeywordMatched,并加入过滤结果:

public static List<CsvLogData> FilterList(List<string> keywords)
{
    var filteredResults = new List<CsvLogData>();

    foreach (var logItem in Logs)
    {
        // 按需求调整匹配规则(示例为忽略大小写的包含匹配)
        var firstMatchedKeyword = keywords.FirstOrDefault(keyword =>
            logItem.SiteUrl.Contains(keyword, StringComparison.OrdinalIgnoreCase) ||
            logItem.SiteTitle.Contains(keyword, StringComparison.OrdinalIgnoreCase));

        if (firstMatchedKeyword != null)
        {
            logItem.KeywordMatched = firstMatchedKeyword;
            filteredResults.Add(logItem);
        }
    }

    return filteredResults;
}

场景2:存储所有匹配的关键词

如果需要保留所有匹配的关键词,先修改CsvLogData的KeywordMatched为集合类型,再收集所有匹配项:

// 修改CsvLogData类
public class CsvLogData
{
    public string SiteUrl { get; set; }
    public string SiteTitle { get; set; }
    public List<string> KeywordsMatched { get; set; } = new List<string>();
}

// 更新FilterList方法
public static List<CsvLogData> FilterList(List<string> keywords)
{
    var filteredResults = new List<CsvLogData>();

    foreach (var logItem in Logs)
    {
        var allMatchedKeywords = keywords.Where(keyword =>
            logItem.SiteUrl.Contains(keyword, StringComparison.OrdinalIgnoreCase) ||
            logItem.SiteTitle.Contains(keyword, StringComparison.OrdinalIgnoreCase)).ToList();

        if (allMatchedKeywords.Any())
        {
            logItem.KeywordsMatched = allMatchedKeywords;
            filteredResults.Add(logItem);
        }
    }

    return filteredResults;
}

注意事项

  • 匹配规则可按需调整:比如精确匹配、正则匹配等,替换示例中的Contains逻辑即可
  • 若不想修改原Logs列表中的对象,可创建CsvLogData的副本(如通过构造函数或对象初始化器)后再赋值关键词
  • 如果KeywordMatched必须为字符串类型,多个匹配关键词可通过string.Join(", ", allMatchedKeywords)拼接后赋值

内容的提问来源于stack exchange,提问作者Kshitij Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 03:17:11