1

.NET 4 C# を使用して、フォーム登録データから作成された、インポートされた csv ファイルから生成された 2 つの DataTable を含む DataSet があります。1 つには、レコード ID とタイムスタンプが含まれています。もう1つは、製品登録(名前、住所など)と対応するレコードID(約10,000レコード)のリストです。

最初のデータテーブルのタイムスタンプを、正しいレコード ID に一致する 2 番目のデータテーブルに挿入するにはどうすればよいですか? DataAdapter を既存の DataSet にアタッチし、それらに対してクエリを実行できますか? タイムスタンプ列を2番目のデータテーブルに追加して、最初のデータテーブルから更新できることを望んでいました。

これが意味をなさないことはわかっています (フォーム データをエクスポートするときにタイムスタンプを含めないのはなぜですか?)。登録に Joomla フォーム モジュールを使用していますが、エクスポートにタイムスタンプが含まれていません。DB から、一致するタイムスタンプとレコード ID データをエクスポートできますが、DataBase 構造はレコード フィールドを別々のテーブルに分割し、レコード全体をマージして使用可能なコンテンツに戻す方法がわかりません。 m は、同じレコードのデータを表示する 2 つの csv で立ち往生しています)。

正しい方向への微調整は大歓迎です。

4

2 に答える 2

1

これを試して:

2番目のデータテーブルに新しい列を追加

DataColumn dc = new DataColumn("DateCol", typeof(System.DateTime));
dt2.Columns.Add(dc);

最初のデータテーブルを使用して、2番目のデータテーブルのこのdatecol列を更新します

dt2.AsEnumerable().Join(  dt1.AsEnumerable(),
       dt2Rows => dt2Rows.ItemArray["record_id"],
       dt1Rows => dt1Rows.ItemArray["record_id"],
       (dt2Rows, dt1Rows) => new { dt2Rows, dt1Rows })
 .ToList()
 .ForEach(i => i.dt2Rows.SetField("DateCol", i.dt1Rows.ItemArray["DateCol"]));

上記の linq クエリを使用するには、クラス ファイルにSystems.Linq名前空間をインポートする必要があります。

于 2013-02-22T22:00:41.143 に答える
1

もちろん、すべてのレコードを自分で反復して一致させることもできます。ただし、データセット内の DataTables 間の関係を設定してから、親列の値を取得する Records データテーブル内に計算列を作成することもできます。この例を参照してください: http://windowsdevcenter.com/dotnet/2003/05/26/datacolumn_expressions.html

リレーションシップを実際に追加する方法については、この記事を参照してください: http://msdn.microsoft.com/en-us/library/ay82azad%28v=vs.71%29.aspx

下に向かって:

Parent.ColumnName 親テーブルの列

したがって、リレーションシップを作成したら、次のようにします。ds["Table2"].Columns.Add("Timestamp", typeof(DateTime), "Parent.Timestamp")

于 2013-02-22T22:00:51.457 に答える