2012-05-01 5 views
6

を有する基によって、私はLINQに変換したいSQLで次のクエリがあります。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; 
    } 

私は5月の主な問題は、多くの人がどこのLINQのステートメントにあるSQL文を変換することであると思いますが、私の場合、私は別の場所を書き込むことができるとは思いませんグループの後にlinq文!

更新:

状況:私は多くの異なるプロファイルを持っているそれぞれの子の数を、持っている、(一部は同じであってもよいです)。ユーザーはいくつかの子供を選択し、そこから共通のプロフィールを導き出したいと思います。つまり、すべての子に対してプロファイルXが見つかった場合、それを取得するよりも、1つを除いたすべての子に対してプロファイルYが見つかった場合、それは無効になります!あなたがここにwhere句を望むよう

+0

...ね! – test

答えて

9

は、私は今、私はネストされたクエリを使用する必要があることだと思うし始めている

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 
+0

私の友人、ありがとう、私は別の場所を書くことができないと思った: – test

+0

私は持っている小さな問題は、 'pcr'は現在のコンテキストに存在しないことです! – test

+0

あなたのアップデートを見ただけでOK!私にそれを試してみましょう:) – test