c# - 字符串包含使用列表返回 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”
解决方案
那是正确的。列表 a 不包含值为“QHIDETH”的元素。列表 a 确实包含一个元素,该元素是一个包含“QHIDETH”(是一个子字符串)的字符串。
您在包含上缺少一个级别。
将其更改为此代码,它将起作用:
var res = b.Where(x => a.Any(elementOfA => elementOfA.Contains(x)));
希望能帮助到你!
推荐阅读
- c++ - QWebEngine 和服务器请求响应
- javascript - Javascript .find() 不适用于嵌套对象数组
- javascript - 单击 iframe 的 href 时删除 iframe 的突变观察者?
- python - APSchedule 有时会错过一些触发器
- svg - 根据图片自动设置svg的宽度
- c - 如何使其适用于任何行数和列数
- c# - 文件在可移动磁盘上时无法设置创建时间
- javascript - 在角色库上显示内容
- authentication - 有关如何通过 Azure ADFS 为在 Tomcat 上运行的应用程序设置身份验证的指南
- r - 通过集成多个列来延长旋转时间