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

如何用LINQ或Entity Framework筛选含指定列值的全组数据?

可以通过LINQ/Entity Framework实现该需求

原数据表

列A列B
PeterApple
PeterOrange
PeterMelon
JohnApple
JohnPotato
JohnMelon
SuzaneKiwi
SuzaneCucumber
SuzaneOrange

预期结果

列A列B
PeterApple
PeterOrange
PeterMelon
SuzaneKiwi
SuzaneCucumber
SuzaneOrange

实现方案

假设你的实体类定义为Item,包含ColumnA(对应列A)和ColumnB(对应列B)属性,数据库上下文的DbSet为dbContext.Items,以下是两种可行的实现方式:

方法1:分步查询(先筛选目标列A集合,再关联查询)

// 1. 提取所有列B为"Orange"的列A值,去重后得到目标集合
var targetColumnAs = dbContext.Items
    .Where(i => i.ColumnB == "Orange")
    .Select(i => i.ColumnA)
    .Distinct()
    .ToList();

// 2. 查询所有列A属于目标集合的完整行数据
var result = dbContext.Items
    .Where(i => targetColumnAs.Contains(i.ColumnA))
    .ToList();

方法2:子查询(单语句紧凑写法)

利用Any方法嵌套子查询,EF会自动将其转换为高效的SQL EXISTS语句:

var result = dbContext.Items
    .Where(i => dbContext.Items
        .Any(subI => subI.ColumnA == i.ColumnA && subI.ColumnB == "Orange"))
    .ToList();

这种写法直接判断当前行的ColumnA是否存在对应的ColumnB为"Orange"的记录,逻辑更直观,也无需额外的中间集合存储。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 13:15:53