首页 > 解决方案 > 如果 list1 包含 list2 中任何字符串的一部分,则每项返回 true

问题描述

如果 list1 中的字符串(或字符串的一部分)与 list2 中的字符串相同,则需要将字符串添加到列表框中。

我现在有:

            int g = 0;

            while (g < musthaves.Count())
            {
                if (list1.Contains(list2[g].ToString()))
                {
                    listBox14.Items.Add("Found: " + list2[g].ToString());
                }
                else
                {
                    listBox14.Items.Add("Not found: " + list2[g].ToString());
                }
                g++;
            }

名单是:

list1:
testcase扫描文档
testcase上传文档
testcase删除文档

list2:
上传文件
扫描文件
显示不一致


所以列表框应该包含:

找到:上传文件
找到:扫描文件
未找到:表示不一致

但是我的结果不是每个字符串都找到的。

任何帮助表示赞赏。

标签: c#if-statementwhile-loopcontains

解决方案


但是我的结果不是每个字符串都找到的。

因为List.Contains检查项目的完全匹配。例如,您正在检查 中是否有字符串"upload document"list1但事实并非如此。

您需要Enumerable.Any检查序列中的任何元素是否与条件匹配。并String.Contains检查来自第二个列表的字符串是否是来自的字符串的子字符串list1

if (list1.Any(l1 => l1.Contains(list2[g])))

推荐阅读