Sql 到 Linq 难度 - 分组依据,具有

本文关键字:具有 Linq 难度 Sql | 更新日期: 2023-09-27 18:32:52

我在SQL中有以下查询,我想将其转换为LINQ:

select profile_id from t
where child_id in (1, 2 ,3, ...) //this will be a list of integers CHILDREN
group by profile_id
having count(distinct child_id) = 3

我很难将 sql 查询中的最后一行写入 linq。以下是我迄今为止的工作:

public IQueryable<ProfileChildRelationship> GetPCRelByCids(List<int> children)
    {
        var query = from pcr in this._entities.ProfileChildRelationships
                    where children.Contains(pcr.pcChildIDF)
                    group pcr by pcr.pcProfileIDF into g
                    ??? having ...?
                    select pcr;
        return query;
    }

我认为主要问题可能是许多人将具有sql语句转换为where linq语句,但就我而言,我认为不可能在linq语句分组之后编写另一个where!

更新:

情况:我有很多孩子,每个孩子都有许多不同的个人资料(有些可能是相同的)。用户将选择多个子项,我想从中得出他们的共同配置文件。也就是说,如果为每个孩子找到配置文件 X,那么我会得到它,如果为每个孩子找到配置文件 Y,除了一个孩子,那么它将无效!

Sql 到 Linq 难度 - 分组依据,具有

听起来你想要一个where子句...

var query = from pcr in this._entities.ProfileChildRelationships
            where children.Contains(pcr.pcChildIDF)
            group pcr by pcr.pcProfileIDF into g
            where g.Select(x => x.ChildId).Distinct().Count() == 3
            select g.Key; // This is the profile ID