2012-12-28 3 views
0

그룹화 된 데이터 집합에서 두 번 이상 나타나는 레코드 그룹을 가져 오려고합니다. 내 문제는 여기에 내 쿼리는 초기 쿼리의 그룹화를 고려하지 않고 기본적으로 모든 레코드를 가져 오는 것입니다. eDTK_PDP_Code 필드 카운트> 만 eDTK_PLI, eDTK_PDP_Code 그룹화 레코드 1이고LINQ 쿼리가 제대로 그룹화되지 않았습니다.

Dim eDTKBase = From eDTKData In dteDTK _ 
Select New With _ 
{ _ 
.eDTK_PDP_Code = eDTKData.Field(Of String)("PDP_CODE"), _` 
.eDTK_PDP_Description = eDTKData.Field(Of String)("PDP_DESCRIPTION"), _ 
.eDTK_WB_Slave = eDTKData.Field(Of String)("WALLBOARD_OR_SLAVE"), _ 
.eDTK_Print_On_DAD = eDTKData.Field(Of String)("PRINT_ON_DAD"), _ 
.eDTK_PLI = eDTKData.Field(Of String)("COMPASS_PLI"), _ 
.eDTK_Dead = eDTKData.Field(Of String)("DEAD"), _ 
.eDTK_Instance = eDTKData.Field(Of String)("COUNTRY_INSTANCE") _ 
} 

I는 다음 레코드 만 필터링하려고 다음과 같이 I는 데이터 테이블의 데이터를 끌어 내리는 초기 쿼리가 다음과 같은 LINQ 쿼리를 사용하여 필드 :

Dim EDTKMultPDPtoPLI = From EDTK In eDTKBase _ 
Group By EDTK.eDTK_PLI, _ 
EDTK.eDTK_PDP_Code _ 
Into g = Group _ 
Where eDTK_PDP_Code.Count > 1 _ 
Select eDTK_PLI, _ 
eDTK_PDP_Code, _ 
eDTK_PDP_Code.Count 

문제는 대신 그룹화 된 레코드의 데이터 테이블에서 데이터의 전체 세트를 평가하는 것입니다. 여기서 내가 뭘 잘못하고 있니? 감사.

+0

당신이 평가하여 무엇을 의미합니까 도움이

희망 나머지 잘린? ** 그룹 단계 이전에 필터링 **을하는 것처럼 보이지 않으므로 전체 데이터베이스를 거쳐 어떤 그룹에 하나 이상의 레코드가 있는지 파악해야합니다. – sgmoore

+0

다른 예제를 발견했고 필터링을 위해 g를 사용했습니다. 그렇다면 eDTK_PDP_Code.Count> 1이 효과가 있습니까? 내 LinqPad 설정을 예제로 가져 오려고 노력 중이므로 좀 더 자세하게 살펴 보겠습니다. – Wade73

+0

이 linq는 sql입니까? –

답변

1

나는 실험을 해봤는데 해결책을 찾았다 고 생각합니다. AdventureWorks를 사용하는 코드는 다음과 같습니다.

from r in (
    from s in SalesOrderHeaders 
    select s.SalesPersonID,s.CustomerID 
    where SalesPersonID isnot nothing) 
group r by key = new with {r.SalesPersonID,r.CustomerID} into group 
where group.count > 1 
select key.SalesPersonID, key.CustomerID, group.count() 

이 결과는 고객이 주어진 영업 사원과 주문한 횟수를 보여줍니다.

RepID CustID Count 
280  1  4 
283  2  8 
275  3  6 
277  3  6 
275  4  6 
277  4  2 
281  5  8 

는이

웨이드