LINQ に変換したい SQL に次のクエリがあります。
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;
}
主な問題は、多くの人が having sql ステートメントを where linq ステートメントに変換することだと思いますが、私の場合、group by linq ステートメントの後に別の where を書くことはできないと思います!
アップデート:
状況: 私には多くの子供がいて、それぞれが多くの異なるプロファイルを持っています (いくつかは同じかもしれません)。ユーザーはいくつかの子供を選択し、そこから共通のプロファイルを導き出します。つまり、すべての子に対してプロファイル X が見つかった場合は取得できますが、1 人を除くすべての子に対してプロファイル Y が見つかった場合は無効になります。