2010-07-09 2 views
1

을 세트처럼 사용하여 데이터를 표시하는 방법 : 나는 C#으로내가 가진 LINQ

 
Indoor    | Attic,Cable,Double,FirePlace 
Outdoor    | Basketball 
Leisure Activities | Freshwater,fishing 

로 데이터를 표시 할

 
Attic   Indoor    Indoor 
Cable   Indoor    Indoor 
Double   Indoor    Indoor 
Fireplace  Indoor    Indoor 
Basketball  Outdoor   Outdoor 
Freshwater  Leisure Activities Leisure Activities 
Fishing   Leisure Activities Leisure Activities 

및 LINQ를 사용하여이

답변

1

실제 데이터 집합을 의미한다고 가정합니다. 나는 그 구문을 더 이상 사용하지 않으므로 구문이 약간 벗어날 수 있지만 기본 개념은 첫 번째 열을 두 번째 열로 그룹화 한 다음 그 중 그룹 키 (두 번째 열)와 그룹화. 당신이 가지고있는 개체 목록이 정말 경우가 있기 때문에

using System.Data; 
using System.Linq; 

var display = ds.AsEnumerable() 
       .GroupBy(r => r[1], r => r[0]) 
       .Select(g => new 
       { 
        RecreationType = g.Key, 
        Examples = string.Join(",", g.Select(e => e.ToString()) 
                .ToArray()) 
       }); 

는, 당신은 (내부 SELECT 절에 ToString()을 (대신 열 번호의) 특정 속성으로 그룹까지이 변경 아마 생략 할 수 있습니다 강력하게 형식화 된 문자열 특성).

+0

나는이 코드를 시도하고 있지만 linq에서 .GroupBy –

+0

을 얻을 수없고 예제로 "System.Data.DataRow"로 표시되는 중 어떻게 텍스트 값을 가져 옵니까? –

+0

@Vara - 저는 실제로 컴파일러에서이를 볼 기회를 얻었고 예제를 업데이트했습니다. 행을 직접 참조하는 대신 AsEnumerable()을 사용하여'EnumerableRowCollection '으로 변환해야합니다. System.Data.DataSetExtensions에 대한 참조를 추가하고 System.Linq를 사용해야합니다. 참고 테스트에서 DataTable을 사용했습니다. – tvanfosson

1

이 내 예입니다 암호. dt.Columns.Add ("Branch Code", typeof (string))와 같이 DataTable 열을 수동으로 만듭니다.

DataTable dt = CreateDataTableForHqSql(); 

     List<MALSATIS_VIEW> value = (from s in hqsqlDataContext.MALSATIS_VIEWs 
            where 
            s.TRANSACTION_DATE >= startDate && s.TRANSACTION_DATE <= endDate //starting 
            select s).ToList(); 

     foreach (MALSATIS_VIEW item in value) 
     { 
      object[] row = new object[] 
      { 
      item.BRANCH_CODE, 
      item.TRANSACTION_DATE, 
      item.CODE, 
      item.EXPLAIN, 
      item.EXPLAIN_CONT, 
      item.BIRIM, 
      item.QUANTITY, 
      item.TOT_CIRO, 
      item.TOT_VAT 
      }; 
      dt.Rows.Add(row); 
     }