You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何筛选Code属性包含指定字符的对象列表?

解决Code属性包含指定子串的对象筛选问题

你的问题出在判断逻辑搞反了:Letters.Contains(x.Code)是在检查x.Code是否完全等于Letters集合中的某一个元素,而不是x.Code是否包含集合里的任意一个子串。

要实现你想要的筛选效果,应该用Any()方法遍历Letters集合,检查每个元素是否是当前对象Code属性的子串,代码如下:

var Results = MyObjects.FindAll(x => Letters.Any(letter => x.Code.Contains(letter)));

代码解释

  • Any()会逐个检查Letters里的每个元素,只要有一个元素满足x.Code.Contains(letter)(即该元素是Code的子串),就会返回true,对应的对象就会被保留到结果集合中。
  • 结合你的示例数据验证:
    • ID 0的Code=ABCD包含'A' → 符合条件
    • ID 1的Code=LMNO包含'M' → 符合条件
    • ID 2的Code=ARDQ包含'A' → 符合条件
    • ID 4的Code=PQRD不包含'A'、'M'或'DQ' → 被排除
      完全匹配你预期的结果。

额外补充:不区分大小写的筛选

如果你的场景需要忽略大小写(比如Code是abcd也想匹配'A'),可以用IndexOf配合忽略大小写的参数替代Contains:

var Results = MyObjects.FindAll(x => Letters.Any(letter => 
    x.Code.IndexOf(letter, StringComparison.OrdinalIgnoreCase) >= 0));

内容的提问来源于stack exchange,提问作者malt_man

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:34:59