2011-09-23 4 views
-1

C#에서 LINQ를 사용하거나 사용하지 않는 대상 데이터 테이블에 원본 데이터 테이블의 하나 이상의 행을 기반으로 행을 복사 할 수 있습니까?LinQ를 사용하여 하나의 데이터 테이블의 중복 된 행을 다른 데이터 테이블에 복사

+4

사용하여 중복 레코드를 찾기 위해 이런 일을해야한다. 그렇지 않으면 유일한 대답은 다음과 같습니다 ** ** **. –

+0

@caspar 내 질문에 C#의 소스 코드가 필요합니다 ... – kalikoi

+3

나중에 참조 할 수 있도록 : 사람들이 처음부터 코드를 작성하도록 요청하는 경우 일반적으로 매우 따뜻한 수신을하지 못합니다. – mikemanne

답변

0

지금까지 어떤 코드를 작성하여 의도를 수집하는 것이 훨씬 쉬워졌습니다.

LINQ를 사용하는 경우 그룹 연산자를 사용하거나 LINQ 확장명과 GroupBy() 메서드를 사용하여 키 목록을 제공하려고합니다.

처럼 : LINQ없이

from row in yourDataTable.AsEnumerable() 
group row by new { c1 = yourDataTabe["col1"], c2 = yourDataTable["col2"], //etc, your keyed columns } into groupedRow 
where groupedRow.Count() > 1 
select new 
{ 
    //output whatever anonymous type information you want 
} 

그냥 메모리와 같은 HashSet<T>를 사용하고는 HashSet의에 있다면, 간단한 검사를 할, 당신은 그것을 전에 본 적이, 그리고 당신의 보조 테이블에 추가 , 그렇지 않다면이 요소를 처음 보았 기 때문에 HashSet에 추가하십시오.

0

나는 asked same myself yesterday입니다. 어쩌면 당신은 VB.NET 경우에도 도움이 다음 찾기 :

Dim dups = From row In source 
     Group By grp = New With {Key .Value1 = CInt(row("Value1")), Key .Value2 = CInt(row("Value2"))} 
     Into Group Where Group.Count > 1 
     Let Text = Group.First.Item("Text") 
     Select Group.First 

If dups.Any Then 
     Dim dest = dups.CopyToDataTable 
End If 

Let 개의 키워드는 중복 행으로 새 DataTable의를 얻기 위해 쿼리에 다른 열을 추가하는 것이 중요하다.

0

히는 당신은 당신이 당신의 문제를 설명하고 지금까지 가지고있는 코드를 설명해야 LINQ

int[] listOfItems = new[] { 4, 2, 3, 1, 6, 4, 3 }; 
var duplicates = listOfItems 
.GroupBy(i => i) 
.Where(g => g.Count() > 1) 
.Select(g => g.Key); 
foreach (var d in duplicates) 
Console.WriteLine(d); 
관련 문제