(VisualBasic) FormにボタンとDataGridViewを2つ貼り付けて次のコードを実行します。 Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click Dim dt As New DataTable With dt .Columns.Add("id", GetType(Integer)) .Columns.Add("name", GetType(String)) .Columns.Add("No1", GetType(String)) .Columns.Add("No2", GetType(String)) .Rows.Add(1, "岡田", "1", "1") .Rows.Add(2, "山田", "2", "1") .Rows.Add(3, "川上", "3", "1") .Rows.Add(4, "下温湯", "4", "1") .Rows.Add(5, "品川区", "2", "2") .Rows.Add(6, "新宿区", "4", "2") End With DataGridView1.DataSource = dt
Dim dt2 As New DataTable With dt2 .Columns.Add("id", GetType(Integer)) .Columns.Add("name", GetType(String)) .Columns.Add("Address", GetType(String)) .Rows.Add(1, "岡田", "") .Rows.Add(2, "山田", "品川区") .Rows.Add(3, "川上", "") .Rows.Add(4, "下温湯", "新宿区") End With DataGridView2.DataSource = dt2 End Sub
■No33900に返信(だんごさんの記事)
> 一旦、質問を取り下げさせて頂きます。
書き込みのルールより引用:
https://dobon.net/vb/bbs/index.html
》 解決していない質問のスレッドを「解決済み」にしないでください。
》 質問者が解決するのをあきらめた(放棄した)というのは、
》 「解決済み」にはなりません。
質問の取り下げに対しても適用されるルールなのかは分からないので、
一応、解決済みチェックは付けたままにしておきます。
で、とりあえず… SQL で言う所の
SELECT
T1.No1 As id
, T1.name As name
, T2.name As Address
FROM
(SELECT name, No1 FROM dt WHERE No2 = '1') AS T1
LEFT JOIN
(SELECT name, No1 FROM dt WHERE No2 = '2') AS T2
ON T1.No1 = T2.No1
ORDER BY
T1.No1
のような結果が欲しいという意味なら、こういう処理方法があります。
Dim t1 = From r In dt.AsEnumerable()
Where r.Field(Of String)("No2") = "1"
Dim t2 = From r In dt.AsEnumerable()
Where r.Field(Of String)("No2") = "2"
Dim q = From r1 In t1
Group Join r2 In t2
On r1!No1 Equals r2!No1 Into g = Group
Select id = r1.Field(Of Integer)("id"),
name = r1.Field(Of String)("name"),
Address = If(g.Any(), CStr(g.First()!name), String.Empty)
Order By id
DataGridView3.DataSource = q.ToArray()
ところが、DataTalelに対しても回答があったのですね?素晴らしい! Dim q = From r1 In t1 Group Join r2 In t2 On r1!No1 Equals r2!No1 Into g = Group Select id = r1.Field(Of Integer)("id"), name = r1.Field(Of String)("name"), Address = If(g.Any(), CStr(g.First()!name), String.Empty) Order By id の部分は、LINQでしょうか? 私の知識がこの部分まで至っていないので内容が理解できませんが、LINQに価値があることが実感できたので、今後、勉強させて頂きます。