如何检查C#类的字符串属性中是否包含指定字符串列表元素?
解决字符串属性是否包含列表所有元素的问题
首先得帮你理清逻辑:你要验证的是单个Class_A实例的definition字符串是否包含checkingList里的每一个元素,但你之前的代码犯了几个关键错误——比如把单个对象当成集合来用LINQ的Select/Where方法,逻辑方向也搞反了。
正确的实现方式
这里给你几种简洁可靠的写法:
1. 用LINQ的All方法(最推荐)
All方法会检查列表里的所有元素是否都满足「被definition包含」这个条件,一行代码就能搞定:
bool success = checkingList.All(item => car.definition.Contains(item));
2. 手动遍历检查(适合新手理解逻辑)
如果想更直观地看到每一步的验证过程,可以用循环逐个检查:
bool success = true; foreach (var checkItem in checkingList) { if (!car.definition.Contains(checkItem)) { success = false; break; // 只要有一个元素不匹配,直接终止循环 } }
3. 忽略大小写的扩展(可选)
如果你的场景需要忽略大小写(比如"3000CC"和"3000cc"都算匹配),可以给Contains方法加上字符串比较参数:
bool success = checkingList.All(item => car.definition.Contains(item, StringComparison.OrdinalIgnoreCase));
为什么你之前的代码行不通?
给你拆解下错误点:
car.Select(...):car是单个Class_A对象,不是集合(比如List<Class_A>),所以根本没有Select这个LINQ方法p.Where(o => ...):同样的问题,单个对象不能用Where——Where是用来过滤集合元素的ForEach.Contains:ForEach是List<T>的遍历执行方法,不是字符串的属性/方法,这个写法完全不符合语法逻辑
内容的提问来源于stack exchange,提问作者Kenzo_Gilead
相关产品推荐
相关产品推荐

