2011-08-23 10 views
0

My Datatableには、2011〜|〜2012〜|〜2013の形式のデータが含まれている列があります。今やテーブルには1つの行しかありません。しかし、そのようなデータがいくつあるかに基づいて、多くの行を作成する必要があります。いくつかの条件に基づいて重複する行を作成するにはどうすればよいですか?

したがって、上記の形式では、2011年、2012年、および2013年に満ちたYear列を持つ3つの行を作成する必要があります。他の列が複製されている場合

Sales列の状態図のように、190〜|〜250〜|〜488の2〜3列以上の形式も存在します。

1つの重要な注意:ここでの行の数は3である必要があります(&販売欄を考慮)。 9(3 x 3)であってはなりません。 1対1の関係があり、2011年の売上高は1億9000万ドル、2012年は250万ドル、2013年は4億4800万ドルと予想されています。

下記の画像で詳しく説明します。

私はfundaがクリアされていると思います。そうでない場合は、私に知らせてください。

Image Added

+0

サンプルコード/データを入力してください。 – Curt

+0

@curt:非常に明確なExcelシート全体を提供したいと思います。 SOにアップロードする方法はありますか? –

+0

あなたのコメントを待っています@curt –

答えて

3

を案内してください、あなたはこのような何かを探していますか?

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; 
} 

この要件については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(); 
     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

は機能しませんでした!コードが行ったことは、それが最初の列のデータで(年などではなく)年として唯一の列を保持していたことでした。残りの列はデータで削除されました。 –

+0

しかし、年の列に似た3〜4列の列がある場合はどうしますか? –

関連する問題