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

.NET Core+EF技术问题:如何根据匹配ID筛选表中记录

修正后的EF查询语句

错误原因是你把Contains的调用对象搞反了:c.MsgId是单个long?类型的值,没有Contains方法;你需要检查的是集合mymsgIds是否包含当前记录的MsgId。

基础修正代码

var result = await _dbContext.MyTable.Where(c => mymsgIds.Contains(c.MsgId)).ToListAsync();

额外注意事项

  • 空集合处理:如果mymsgIds可能为null,先做判空避免空引用异常:
var msgIds = mymsgIds ?? Enumerable.Empty<long?>();
var result = await _dbContext.MyTable.Where(c => msgIds.Contains(c.MsgId)).ToListAsync();
  • 性能优化:将IEnumerable<long?>转换为List<long?>或HashSet<long?>,EF Core能更高效地生成SQL查询:
var msgIdSet = mymsgIds?.ToHashSet() ?? new HashSet<long?>();
var result = await _dbContext.MyTable.Where(c => msgIdSet.Contains(c.MsgId)).ToListAsync();
  • 空值匹配:如果mymsgIds包含null,EF会自动匹配表中MsgId为null的记录(前提是表的MsgId字段允许为空)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 08:00:28