2012-05-01 3 views
6

나는 내가 LINQ로 변환하고자하는 SQL에서 다음 쿼리가 :는 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에. 나는 그 수도의 주요 문제가 많은이 곳 LINQ 문에 가진 SQL 문을 변환하는 것이 생각하지만 내 경우에는 내가 그것을 다른 곳을 작성할 수 있습니다 생각하지 않는다

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; 
    } 

: 다음은 지금까지 내 작품 그룹 linq 성명 후!

업데이트 :

상황 : 나는 많은 다른 프로파일을 가지고 각각의 아이들의 번호를 가지고, (일부는 동일 할 수있다). 사용자는 공통된 프로파일을 도출하기 위해 많은 수의 아동을 선택할 것입니다. 즉, 프로파일 X가 모든 어린이에 대해 발견되면, 내가 얻게 될 것보다, 프로파일 Y가 1을 제외한 모든 어린이에 대해 발견되면, 유효하지 않을 것입니다! 당신이 여기에 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