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

如何用LINQ查询语法实现多对多关联表的左外连接?

LINQ查询语法实现多对多关联图片查询

在EF Code First的多对多场景中,Message和Image的导航属性已自动关联中间表,无需显式使用MessageImage实体,直接通过导航属性即可构建查询:

var targetMessageId = 14;

var query = from image in db.Images
            where image.Messages.Any(m => m.Id == targetMessageId) 
               || !image.Messages.Any()
            select image;

var result = query.ToList();

逻辑说明:

  • image.Messages.Any(m => m.Id == targetMessageId):筛选出与ID为14的消息关联的图片
  • !image.Messages.Any():筛选出未关联任何消息的图片
  • 两个条件通过||合并,最终得到符合需求的所有图片集合

若需确保结果无重复(理论上不会出现重复,但可按需添加),可在查询末尾追加Distinct():

var query = (from image in db.Images
             where image.Messages.Any(m => m.Id == targetMessageId) 
                || !image.Messages.Any()
             select image).Distinct();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:33:27