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

EF Core LINQ查询如何按ID列表过滤AuditQuestionnaires结果集

问题根源

你之前的循环写法错误是因为每次循环都会重新给查询结果变量赋值,最终只会保留最后一次循环匹配到的单条ID对应的记录,同时会产生多次不必要的数据库查询。

正确实现方式

你可以直接在LINQ查询的where条件中使用Contains方法,Entity Framework 会自动将该方法翻译为SQL的IN语句,一次性完成过滤,无需循环:

// 假设你存储ID的整数列表为 List<int> RecordIds
questionnairs = from q in dbContext.AuditQuestionnaires
                .Include("Company")
                where q.Company != null 
                      && q.Company.RecordID == companyId 
                      && RecordIds.Contains(q.RecordID) // 新增ID列表过滤条件
                select q;

如果需要兼容ID列表为空的场景(即ID列表为空时跳过该过滤条件),可以调整写法:

questionnairs = from q in dbContext.AuditQuestionnaires
                .Include("Company")
                where q.Company != null 
                      && q.Company.RecordID == companyId 
                      && (!RecordIds.Any() || RecordIds.Contains(q.RecordID))
                select q;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:39:04