2013-01-07 2 views
1

데이터 테이블에서 전체 중복 행을 선택하십시오. 단일 열을 반환 할 수 있지만 열 값 대신 전체 행을 가져 오는 방법을 알아낼 수 없습니다.linq C#

도움말 !!

리턴해야하는 필드는 VDMList W Table입니다. 다음과 같이

var duplicates = dt.AsEnumerable() 
    .Select(dr => dr.Field<string>("VMDList")) 
    .GroupBy(x => x) 
    .Where(g => g.Count() > 1) 
    .Select(g => g.Key) 
    .ToList(); 


columns of DT Table, VDMList 
output is 
4 | 02,2 
12 | 03,3 
15 | 02,2 
+0

를 사용하여 중복이있는 모든 행을 반환하려면? – Tilak

+0

또한 테이블 구조를 보여줄 수 있습니까? – IronMan84

+0

전체 행 -> 어떤 기준에 따라 일부 값이 누락 됨 – Tilak

답변

2

다음 쿼리는 VMDList 중복 행이있는 groupfirst 항목을 반환합니다. first 항목을 선택할 기준이 없습니다. 임의의 random 행이 될 수 있습니다.

var duplicates = dt.AsEnumerable() 
    .GroupBy(dr => dr.Field<string>("VMDList")) 
    .Where(g => g.Count() > 1) 
    .Select(g => g.First()) 
    .ToList(); 

는 출력을 보여 CAU SelectMany

+0

나는 첫 번째뿐만 아니라 중복 된 행을 반환하기를 원합니다. – Nebseb

+0

[SelectMany] (http://msdn.microsoft.com/en-us/library/system.linq.enumerable.selectmany.aspx)를 사용해야합니다. 업데이트 대답 – Tilak

+0

이것은 나를 위해 일했습니다, 도움을 주셔서 감사합니다 !!!!! – Nebseb

-1

요구 사항은 전체 행을 선택하기보다는 열을 선택하는 경우, 다음 LINQ를 수정 :

var duplicates = dt.AsEnumerable() 
.Select(dr => dr.Field<string>("VMDList")) 
.GroupBy(x => x) 
.Where(g => g.Count() > 1) 
.Select(g); 

중복 그룹 수집 할 위치.

+0

나는 이것을 시도했는데 g가 현재 컨텍스트에 존재하지 않는다고 말합니다 ..... – Nebseb