2つの列が固定されている2つのテーブルがあります。一部の列は同一であり、一部は新しいものです。列は動的です。
コードレベルでそれを行う必要があり、ループして条件を付けようとしています
私が欲しいのは、条件に従ってレポートを生成することです。
- table1 と table2 のすべての列が存在する必要があります。
- 列が共通で値がある場合は、他のテーブルの同一の行に追加する必要があります。
- 1 つのテーブルに存在し、他のテーブルには存在しない行がある場合は、それを含める必要があります。
サンプルデータ
表1
ID | NAME | P1 | P2 | P3
----------------------------
1 | A1 | 1 | 2 | 3.3
2 | A2 | 4.4 | 5 | 6
表 2
ID | NAME | P1 | P2 | P4
---------------------------
1 | A1 | 10 | 11 | 12
2 | A2 | 12 | 14 | 15
3 | A3 | 16 | 17 | 18
期待される出力:
ID | NAME | P1 | P2 | P3 | P4
---------------------------------
1 | A1 | 11 | 13 | 3.3 | 12
2 | A2 | 16.4 | 19 | 6 | 15
3 | A3 | 16 | 17 | null| 18
現在までの進捗:
最初に、これらの 2 つのテーブルを table1 にマージしました
table1.Merge(table2)
次に、それをグループ化しようとしています
var query = from row in table1.AsEnumerable()
group row by new
{
ID = row.Field<int>("ID"),
Name = row.Field<string>("Name")
}
into grp
select new
{
ID = grp.Key.ID,
Name = grp.Key.Name,
Phase1 = grp.Sum(r => r.Field<decimal>("P1"))
};
このコードを変更してデータテーブルを取得しました。添付の cs ファイルを参照してください。
これは機能していますが、列の数は動的であるため、他の列についても繰り返して、1 つの列が追加されるこれらすべての小さなテーブルを結合する必要があると思います。
これらの小さなテーブルをすべてマージするにはどうすればよいですか?
私はここで道に迷っています。他の方法はありますか。バカみたいな感じ。
どんな助けでも大歓迎です。
添付ファイル: