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

如何使用LINQ在指定字符串列表中查找包含目标字符串的对象

用LINQ查找包含指定字符串的对象指南

没问题,我来帮你搞定用LINQ查找包含指定字符串的对象这件事!先假设你的Author类大概是这样的(因为你没贴全,我补个常见的结构方便演示):

public class Author
{
    public string Name { get; set; }
    public List<string> Books { get; set; }
}

咱们分两种常见场景来写代码:

1. 从单个字符串列表中筛选包含指定字符串的元素

比如你想从BookListNo1里找出标题包含某个关键词的书籍,代码如下:

// 定义要查找的目标字符串
string searchKeyword = "the";

// 筛选包含指定字符串的书籍(忽略大小写)
var matchingBooks = BookListNo1.Where(book => 
    book.Contains(searchKeyword, StringComparison.OrdinalIgnoreCase));

// 如果需要区分大小写,直接用下面这行
// var matchingBooks = BookListNo1.Where(book => book.Contains(searchKeyword));

解释一下:

  • Where是LINQ的过滤方法,用来留下符合条件的元素
  • Contains方法判断字符串是否包含目标子串,加上StringComparison.OrdinalIgnoreCase参数可以忽略大小写,避免因为大小写差异漏掉结果

2. 从Author列表中筛选出拥有符合条件书籍的作者

如果你想从MyAuthorList里找出那些写过包含指定字符串书籍的作者,代码会稍微嵌套一点:

string searchKeyword = "the";

// 查找至少有一本书包含指定字符串的作者
var matchingAuthors = MyAuthorList.Where(author => 
    author.Books.Any(book => 
        book.Contains(searchKeyword, StringComparison.OrdinalIgnoreCase)));

这里的Any方法用来判断作者的书籍列表里是否存在至少一本符合条件的书,配合外层的Where就能筛选出我们要的作者对象。

完整示例代码

把初始化和查询整合起来,你可以直接运行看效果:

// 先定义你的书籍列表
List<string> BookListNo1 = new List<string>() { "The Girl with the Dragon Tattoo", "The Name of the Rose", "The Alienist", "In Cold Blood", "The Firm" };
List<string> BookListNo2 = new List<string>() { "And Then There Were None", "Mystic River", "The Shadow of the Wind", "Angels & Demons" , "The Big Sleep", "The Pelican Brief" };
// 假设BookListNo3的内容
List<string> BookListNo3 = new List<string>() { "The Hobbit", "The Lord of the Rings", "The Silmarillion" };

// 初始化作者列表
List<Author> MyAuthorList = new List<Author>()
{
    new Author { Name = "Stieg Larsson", Books = BookListNo1 },
    new Author { Name = "Agatha Christie", Books = BookListNo2 },
    new Author { Name = "J.R.R. Tolkien", Books = BookListNo3 }
};

// 执行查询
string searchTerm = "the";
var resultAuthors = MyAuthorList.Where(a => 
    a.Books.Any(b => b.Contains(searchTerm, StringComparison.OrdinalIgnoreCase)));

// 输出结果
foreach (var author in resultAuthors)
{
    Console.WriteLine($"📚 作者:{author.Name}");
    Console.WriteLine("符合条件的书籍:");
    foreach (var book in author.Books.Where(b => b.Contains(searchTerm, StringComparison.OrdinalIgnoreCase)))
    {
        Console.WriteLine($" - {book}");
    }
    Console.WriteLine();
}

小提示

  • 如果你的字符串比较需要考虑文化地域差异(比如某些语言的特殊大小写规则),可以把StringComparison.OrdinalIgnoreCase换成StringComparison.CurrentCultureIgnoreCase或者StringComparison.InvariantCultureIgnoreCase
  • 如果要找完全匹配目标字符串的元素,直接用book == searchKeyword(加上比较规则即可),不用Contains

内容的提问来源于stack exchange,提问作者Happy Coconut

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:49:26