c#字符串.当列表的结果是may时,IndexOf只返回一个元素

本文关键字:返回 元素 一个 IndexOf 列表 字符串 结果是 may | 更新日期: 2023-09-27 18:01:40

我有一个字符串列表,从数据库中检索,我想要的是从这个列表中筛选,只获得列表项,其中包含一些文本。字符串。contains是完美的,但是区分大小写。我预计会有很多结果,但只有一个。这是我的代码片段

if (!String.IsNullOrWhiteSpace(searchTerm))
    list = list.Where(a => a.Description.IndexOf(searchTerm, StringComparison.OrdinalIgnoreCase) >= 0
        || a.Part.ModuleName.IndexOf(searchTerm) >= 0).ToList();

如果你能弄清楚这是怎么回事,我会很感激的。

c#字符串.当列表的结果是may时,IndexOf只返回一个元素

您只忽略对IndexOf的两个调用中的第一个的大小写。这可能会删除一些预期的结果。

尝试将它添加到两个:

if (!String.IsNullOrWhiteSpace(searchTerm)) {
    list = list.Where(a => a.Description.IndexOf(searchTerm, StringComparison.OrdinalIgnoreCase) >= 0
        || a.Part.ModuleName.IndexOf(searchTerm, StringComparison.OrdinalIgnoreCase) >= 0).ToList();
}

从问题我不知道你为什么使用indexOf。这就是我从包含其他不区分大小写的字符串的字符串列表中获取字符串的子集所要做的事情。

List<String> searchTerms = new List<String>() { "abcde","efghi","abCDe","efGHI","jklmnoP"};
var subList = searchTerms.Where(st => st != null && st.ToLower().Contains("bcde")).ToList();
foreach(String output in subList)
{
Console.WriteLine(output);
}
输出:

abcde
abCDe