2012-02-01 5 views
0

SqlDataAdapter 및 채우기 - 메서드를 사용하여 SQL 데이터베이스에서 DataTable을 가져 왔습니다. 이 같은DataTable의 여러 중복 값을 한 행으로 정렬

내 데이터 테이블 외모 : 등등

Timestamp(unix time) | Value

  x   | 10 
      x   | 42 
      x   | 643 
      y   |  5 
      y   |  9 
      y   | 70 

... 그리고. 테이블에는 많은 값 (1000+)이 있지만 항상 동일한 타임 스탬프가있는 3 개의 행이 있습니다.

지금 나는 같이 할 :

Timestamp(unix time) | Value 1 | Value 2 | Value 3

 x    | 10 | 42 | 643 
     y    | 5 |  9 | 70 

어떻게 이런 식으로 정렬 할 수 있습니다?

어떤 도움

감사 (개 이상의 값이있는 경우, programm에 그냥 먼저 발견 한 세 가지 값을 삽입한다)! LinqPad에서 다음

답변

1

감사합니다. 나는 지금 그것을 직접 풀었다.

이것은 내가했던 방법입니다

var grouped = from myRow in myDataTable.AsEnumerable() 
       group myRow by myRow.Field<int>("TIMESTAMP"); 

foreach (var timestamp in grouped) 
{ 
    string[] myRow = new string[5]; 
    myRow[0] = timestamp.Key.ToString(); 

    int i = 1; 
    foreach (var value in timestamp) 
    { 
     myRow[i] = value.Field<double>("VALUE").ToString(); 
     i++; 
     if (i > 4) 
      break; 
    } 

    mySortedTable.Rows.Add(myRow); 
} 
0

나는이 또한 SQL에서 풀 수있을 수 있다고 생각하지만 프로그래밍을 수행하려는 경우, 내가 테스트 한 :

void Main() 
{ 
    var list = new List<Tuple<string,int>> { 
     Tuple.Create("x", 10), 
     Tuple.Create("x", 42), 
     Tuple.Create("x", 643), 
     Tuple.Create("y", 5), 
     Tuple.Create("y", 9), 
     Tuple.Create("y", 70), 
    }; 

    var result = 
    from grp in list.GroupBy(t => t.Item1) 
    let firstThree = grp.Select(t => t.Item2).Take(3).ToList() 
    select new { 
      Key = grp.Key, 
      Value1 = firstThree[0], 
      Value2 = firstThree[1], 
      Value3 = firstThree[2] }; 

    foreach (var item in result) 
     Console.WriteLine(item); 
} 

그것은 당신이 적어도 세 가지 요소가 있다고 가정합니다, 그렇지 않으면 범위를 벗어나는 예외가 발생합니다.

익명 형식이지만 결과를 DataRow로 쉽게 파이프 할 수 있습니다.

+0

이 답변 주셔서 감사합니다! 나는 나의 질문을 편집했다. 나의 예는 단지 1000 개가 넘는 큰 테이블의 발췌 일 뿐이다. SQL에서 해결할 수 있습니까? 위대한,하지만 난 아직 SQL에서 아무것도 (어쩌면 누군가가 접근 할 수 게시 할 수 있습니다 나중에 시도해 볼게) – Blubb

+1

Flq, 상세 :'Dictionary > result = list .GroupBy (a => a.Item1) .ToDictionary ( x => x.Key, y => y.Select (z => z.Item2) .ToList() ); ' –

관련 문제