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

求助:使用Entity Framework实现逗号分隔值的数据库查询

问题分析与修复方案

看起来你在Linq查询的条件逻辑上踩了个小坑~你的Lambda表达式里ApproversIdL.Any(x=>x.ToString())这部分写法有问题,它其实是在判断列表里的元素转成字符串后是否为非空(永远返回true),而不是检查当前ID是否在目标列表里。

来看看修正后的代码:

var t = GetAll();
if (!string.IsNullOrEmpty(ApproversId))
{
    List<string> approversIdList = ApproversId.Split(',').ToList();
    // 核心修正:检查当前数据项的AproversIds中是否有任意一个ID在目标列表里
    t = t.Where(s => s.AproversIds.Any(id => approversIdList.Contains(id.ToString())));
}

逻辑解释:

  • 先把传入的ApproversId拆分成字符串列表(比如传入"3,9"就得到["3","9"])
  • 对每个数据项s,我们检查它的AproversIds集合中,是否存在至少一个ID,转成字符串后能在approversIdList里找到匹配项
  • 这样就完全符合你的查询规则:只要列表里包含"3",所有包含3的行都会被选中(也就是全部5行),哪怕同时传入了"9",因为只要满足其中一个匹配条件就会被返回

如果你的AproversIds集合里的元素本身就是字符串类型,还可以去掉.ToString()简化代码:

t = t.Where(s => s.AproversIds.Any(id => approversIdList.Contains(id)));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 00:39:05