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

如何在LINQ中实现集合属性多字符串同时包含的通用查询逻辑

实现代码

直接使用LINQ的All方法替代原有硬编码的多条件与逻辑即可,修改后代码如下:

queryResult = questions.Where(q => q.proposition.Any(p => 
    arrayStrings.All(keyword => p.Libelle.Contains(keyword))
));

逻辑说明

  • All方法的特性是只有当数组中所有元素都满足判断条件时才会返回true,正好匹配你要求的「Libelle同时包含全部关键词」的筛选规则。
  • 如果你传入的关键词数组存在重复值(比如你示例中的两个bb),且不需要重复校验相同关键词,建议先调用Distinct()去重减少不必要的计算,优化后写法:
    queryResult = questions.Where(q => q.proposition.Any(p => 
        arrayStrings.Distinct().All(keyword => p.Libelle.Contains(keyword))
    ));
    
  • 默认Contains是区分大小写匹配的,如果需要忽略大小写,可调整判断逻辑为:
    p.Libelle.Contains(keyword, StringComparison.OrdinalIgnoreCase)
    
  • 该写法同时兼容内存集合查询、EF Core等ORM的数据库查询场景,不需要额外适配。

示例验证

你给出的测试用例中,arrayStrings = ["aa","bb","cc","ll","bb"],执行All判断时:

  • 对aabbccllllllppplmo:所有关键词都能匹配到,返回true,会被保留
  • 对jjjkkkkk、aakk:存在关键词匹配失败,返回false,会被过滤
    和你的预期结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 21:54:03