2011-08-23 7 views
0

내 Datatable에는 2011 ~ | ~ 2012 ~ | ~ 2013 형식의 데이터가 포함 된 일부 열이 있습니다. 이제 테이블에는 행이 하나만 있습니다. 그러나 이러한 데이터의 수에 따라 많은 행을 만들어야합니다.일부 조건에 따라 중복 행을 만드는 방법은 무엇입니까?

위의 형식에서 2011 년, 2012 년 및 2013 년으로 채워진 연도 열이있는 행을 세 행으로 만들어야합니다. 다른 열이 중복되는 경우

영업 열 상태와 같은 몇 가지 더 많은 열 (예 : 190 ~ | ~ 250 ~ | ~ 488)에 대해서도 연도 열과 비슷한 형식이 존재합니다.

하나의 중요한 참고 사항 : 여기 행의 수는 3이어야합니다 (& 판매 열을 고려). 9 (3 x 3)가되어서는 안됩니다. 일대일 관계가 있는데, 2011 년 매출액은 1 억 9 천만 달러, 2012 년은 250 만 달러, 2013 년 예상 매출은 4 억 8 천 8 백만 달러라고한다.

아래 이미지는 더 자세히 설명합니다.

나는 funda가 삭제 된 것 같아요. 그렇지 않다면 알려주세요.

이 같은 뭔가를 찾고 계십니까

Image Added

+0

일부 샘플 코드/데이터를 제공 할 수 있습니다. – Curt

+0

@curt : 질문을 아주 명확히하는 전체 Excel 시트를 제공하고 싶습니다. 그래서 업로드 할 수있는 방법이 있습니까? –

+0

귀하의 의견을 기다리고 있습니다 @curt –

답변

3

을 안내하세요? DataTable dataTable = AlterDataTable(dt);

private DataTable AlterDataTable(DataTable oldTable) 
{ 
    DataTable newTable = oldTable.Clone(); 
    foreach (DataRow row in oldTable.Rows) 
    { 
     var years = row["Year"] 
     .ToString() 
     .Split(new string[] { "~|~" }, StringSplitOptions.RemoveEmptyEntries) 
     .ToList(); 
     foreach (var year in years) 
     { 
      row["Year"] = year; 
      newTable.ImportRow(row); 
     } 

    } 

    return newTable; 
} 

전화는이 요구를 들어,이

private DataTable AlterDataTable(DataTable oldTable) 
{ 
    DataTable newTable = oldTable.Clone(); 
    foreach (DataRow row in oldTable.Rows) 
    { 
     var years = row["Year"] 
     .ToString() 
     .Split(new string[] { "~|~" }, StringSplitOptions.RemoveEmptyEntries) 
     .ToList(); 
     var sales = row["Sales"] 
     .ToString() 
     .Split(new string[] { "~|~" }, StringSplitOptions.RemoveEmptyEntries) 
     .ToList(); 
     if (years.Count != sales.Count) 
     { 
      throw new Exception("Argument count mismatch exception"); 
     } 
     for (var i = 0; i < years.Count; i++) 
     { 
      row["Year"] = years[i]; 
      row["Sales"] = sales[i]; 
      newTable.ImportRow(row); 
     } 
    } 
    return newTable; 
} 

스플릿가 같은 수를 가지고해야한다는주의하십시오.

+0

제가 이것을 시험합시다! .. 손가락이 엇갈 렸습니다! –

+0

이 작동하지 않았습니다! 코드에서 한 것은 첫 번째 열의 데이터가 포함 된 Year로만 하나의 열만 유지한다는 것입니다 (2011 년 등은 아닙니다). 나머지 열이 데이터와 함께 제거되었습니다. –

+0

그러나 연도 열과 비슷한 3-4 개의 열이 더 있으면 어떻게해야합니까? –

관련 문제