###実現したいこと
2つのDataTableをLINQでJOINして、JOINした全ての列をSELECTしたいのですが、
上手く実現できません。一つずつ列を指定する必要があるのでしょうか。
どうかご教示ください。
環境:
visual studio 2013, c#, wpf,
.net Framework4.5
windows7
SQLでしたら以下のように「*」で全列をSELECTする形になります。
SQL
1SELECT 2 fam.* 3 ,per.* 4FROM dtFamily AS fam 5 INNER JOIN dtPerson AS per 6 ON fam.familyId = per.familyId
###現状
クエリ構文ならびにメソッド構文でJOINは出来てると思います。
(私見ですが)
###仕掛中のコード
C#
1 //家族テーブル作成 2 DataTable dtFamily = new DataTable(); 3 dtFamily.Columns.Add("familyId", typeof(int)); 4 dtFamily.Columns.Add("familyName", typeof(string)); 5 dtFamily.Rows.Add(0, "ishikawa"); 6 dtFamily.Rows.Add(1, "yamada"); 7 dtFamily.Rows.Add(2, "kondo"); 8 dtFamily.Rows.Add(3, "tanaka"); 9 10 //個人テーブル作成 11 DataTable dtPerson = new DataTable(); 12 dtPerson.Columns.Add("familyId", typeof(int)); 13 dtPerson.Columns.Add("personId", typeof(int)); 14 dtPerson.Columns.Add("personName", typeof(string)); 15 dtPerson.Rows.Add(0, 0, "takeo"); 16 dtPerson.Rows.Add(0, 1, "ruri"); 17 dtPerson.Rows.Add(0, 2, "takeshi"); 18 dtPerson.Rows.Add(1, 3, "tarou"); 19 dtPerson.Rows.Add(1, 4, "hanako"); 20 dtPerson.Rows.Add(1, 5, "taroko"); 21 dtPerson.Rows.Add(2, 6, "takuya"); 22 dtPerson.Rows.Add(2, 7, "chiemi"); 23 dtPerson.Rows.Add(3, 8, "kaito"); 24 //DataGrid1.ItemsSource = dt.DefaultView; 25 26 //メソッド構文 27 var methodQ = dtPerson.AsEnumerable().Join( 28 dtFamily.AsEnumerable(), 29 f => f["familyId"], 30 p => p["familyId"], 31 (p, f) => new 32 { 33 FamilyName = f["familyName"], 34 PersonName = p["personName"] 35 }); 36 DataGrid1.ItemsSource = methodQ; 37 38 //クエリ構文 39 var queryQ = 40 from p in dtPerson.AsEnumerable() 41 join f in dtFamily.AsEnumerable() 42 on p["familyId"] equals f["familyId"] 43 select new { 44 FamilyName = f["familyName"] 45 ,PersonName = p["personName"]}; 46 DataGrid2.ItemsSource = queryQ; 47
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/19 07:52