C#のLINQを使用してデータの左外部結合を行いたいのですが、スマートな書き方があるかどうか気になりました。
既存ではクエリ式で書かれているものがありましたが、メソッド式で書かれているものがなかったためより良い書き方があれば知りたいです。
想定
複数のテキストファイルから取得した特定形式のデータを正規表現によりパースを行い、結合処理を行う。
その際にすべてのキーが入っているファイルとそうでないファイルがあり、左外部結合を行ないたい。
仮想データ
csharp
1//主たるテーブル 2var MainTable = Enumerable.Range(1,10) 3 .Select(val=>new { ID = val, Name = $"Name{val}" }); 4 5//結合するテーブル 6var SubTable = Enumerable.Range(1,5) 7 .Select(val=>new { ID = val*2, Graph= $"Graph{val}"); 8
入力データ
- MainTable
ID | Name |
---|---|
1 | Name1 |
2 | Name2 |
3 | Name3 |
4 | Name4 |
5 | Name5 |
6 | Name6 |
7 | Name7 |
8 | Name8 |
9 | Name9 |
10 | Name10 |
- SubTable
ID | Graph |
---|---|
2 | Graph1 |
4 | Graph2 |
6 | Graph3 |
8 | Graph4 |
10 | Graph5 |
望む出力
ID | Name | Graph |
---|---|---|
1 | Name1 | null |
2 | Name2 | Graph1 |
3 | Name3 | null |
4 | Name4 | Graph2 |
5 | Name5 | null |
6 | Name6 | Graph3 |
7 | Name7 | null |
8 | Name8 | Graph4 |
9 | Name9 | null |
10 | Name10 | Graph5 |
SQLで考えた場合
SQL
1SELECT main.ID, main.Name, sub.Graph 2FROM MainTable AS main LEFT JOIN SubTable AS sub 3ON main.ID = sub.ID

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。