C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.56147 の関連記事表示

<< 0 >>
■56147  Re[1]: DataTableの結合・Distinct・etc.
□投稿者/ 魔界の仮面弁士 -(2010/12/29(Wed) 14:49:14)
    2010/12/29(Wed) 15:21:14 編集(投稿者)

    No56145 (クリッパー さん) に返信

    Module Module1
    Sub Main()
    Dim doc = <root>
    <Table1 ID="1" NAME_1="あああ1" NAME_2="いいい1"/>
    <Table1 ID="2" NAME_1="あああ2" NAME_2="いいい2"/>
    <Table1 ID="8" NAME_1="あああ3" NAME_2="いいい3"/>
    <Table1 ID="9" NAME_1="あああ4" NAME_2="いいい4"/>
    <Table2 ID="1" VALUE_1="ううう1" VALUE_2="えええ1"/>
    <Table2 ID="2" VALUE_1="ううう2" VALUE_2="えええ2"/>
    <Table2 ID="2" VALUE_1="ウウウ2" VALUE_2="エエエ2"/>
    <Table2 ID="5" VALUE_1="ううう3" VALUE_2="えええ3"/>
    <Table2 ID="6" VALUE_1="ううう4" VALUE_2="えええ4"/>
    </root>
    doc.Save("C:\sample.xml")

    Dim ds As New DataSet()
    ds.ReadXml("C:\sample.xml")
    Dim t1 As DataTable = ds.Tables("Table1")
    Dim t2 As DataTable = ds.Tables("Table2")

    '1.Table1とTable2を内部結合する方法はありますか?
    Console.WriteLine("Table1.ID, Table1.NAME_1, Table2.VALUE_2")
    'Dim q1 = From r1 In t1 From r2 In t2 _
    ' Where r1!ID = r2!ID _
    ' Select r1!ID, r1!NAME_1, r2!VALUE_2
    Dim q1 = From r1 In t1 _
    Join r2 In t2 _
    On r1!ID Equals r2!ID _
    Select r1!ID, r1!NAME_1, r2!VALUE_2
    For Each o In q1
    Console.WriteLine("{0}, {1}, {2}", o.ID, o.NAME_1, o.VALUE_2)
    Next
    Console.WriteLine()

    '2.Table2のIDのリストを、SQLでいうところのDISTINCTのような感じで抽出する方法はありますか?
    Console.WriteLine("Distinct of Table2")
    Dim idList = (From r2 In t2 Select r2!ID Distinct).ToList()
    idList.ForEach(AddressOf Console.WriteLine)

    '3.SQLでいうところの、
    'SELECT NAME_1 FROM Table1 WHERE ID IN (SELECT ID FROM Table2);
    'のような他テーブルの内容を使ったサブクエリ的な方法でDataTable等を作成する方法はありますか?
    Console.WriteLine()
    Dim q3 = From r1 In t1 Where idList.Contains(r1!ID) Select r1!NAME_1
    For Each o In q3
    Console.WriteLine(o)
    Next

    Console.ReadLine()
    End Sub

    End Module
記事No.56145 のレス /過去ログ94より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -