2

.NET の DataSet に 2 つのテーブルがあります。ID列でそれらを結合したい。次に、DataGridView に最初のテーブルから 2 つの列を表示し、2 番目のテーブルから 1 つの列を表示します。

簡単に言えば、2 つのテーブルの関係は 1 対 1 です。

それはできますか?

4

2 に答える 2

4

えっ、読み取り専用ですか?.NET 3.5 / C# 3.0 では、おそらく LINQ 結合と匿名出力タイプを非常に簡単に使用できます。

        DataTable left = new DataTable
        {
            Columns = { {"PK", typeof(int)}, {"Name", typeof(string)}},
            Rows = {{1,"abc"},{2,"def"}}
        }, right = new DataTable
        {
            Columns = { { "FK", typeof(int) }, { "Value", typeof(decimal) } },
            Rows = { { 1, 123.45M }, { 2, 678.9M } }
        };
        var qry = from x in left.Rows.Cast<DataRow>()
                  join y in right.Rows.Cast<DataRow>()
                  on x.Field<int>("PK") equals y.Field<int>("FK")
                  select new
                  {
                      Name = x.Field<string>("Name"),
                      Value = y.Field<decimal>("Value")
                  };
        var data = qry.ToList();

その後、データの「名前」と「値」にバインドできます。ごみCast<>を失う可能性があるため、型付きデータセットの方が簡単であることに注意してください。Field<>

于 2008-11-23T16:34:23.103 に答える
0

なぜデザイナーを使わないのですか?両方のテーブルをデータセットに配置し、リレーションシップを確立し、Fill/Get メソッドを次のように変更します (「内部結合」を使用)。

SELECT Productos.idProducto、Productos.Nombre、Precios.Precio、Tiendas.idTienda、Zonas.Zona、Productos.idZona FROM
Productos INNER JOIN Precios ON Productos.idProducto = Precios.idProducto

于 2009-08-06T22:36:30.750 に答える