首页 > 解决方案 > 字符串包含使用列表返回 false

问题描述

一直试图理解为什么这段代码不起作用。包含似乎不适用于列表

var a = new List<string>() { "QHIDETH_1" };
var b = new List<string>() { "QHIDETH" };

var res = b.Where(x => a.Contains(x));
var res2 = a.Where(x => b.Contains(x));

Console.WriteLine(res.Count() + " " +res2.Count()+ " " + "QHIDETH_1".Contains("QHIDETH") );

输出为“0 0 True”

https://dotnetfiddle.net/PwTkMH

标签: c#

解决方案


那是正确的。列表 a 不包含值为“QHIDETH”的元素。列表 a 确实包含一个元素,该元素是一个包含“QHIDETH”(是一个子字符串)的字符串。

您在包含上缺少一个级别。

将其更改为此代码,它将起作用:

var res = b.Where(x => a.Any(elementOfA => elementOfA.Contains(x)));

希望能帮助到你!


推荐阅读