1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
using System.Data; using System.Linq; using System.Windows.Forms; namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); // データテーブル作成 DataTable dt = new DataTable("newTable"); // カラム作成 string[] cols = new string[] { "id", "name", "age" }; foreach (string c in cols) { dt.Columns.Add(c); } // データセット作成 DataSet ds = new DataSet(); // データセットにテーブルを追加 ds.Tables.Add(dt); // 値作成(2次元配列) string[,] vals = new string[,] { {"01", "02", "03", "04"}, // id {"aa", "bb", "cc", "dd"}, // name {"11", "12", "13", "14"} // age }; for (int r = 0; r < vals.GetLength(1); r++) // GetLength(0) = 3(1次元), GetLength(1) = 4(2次元) { DataRow row = ds.Tables["newTable"].NewRow(); // DataRow row = dt.NewRow(); このようにも書ける row["id"] = vals[0, r]; // [1次元、2次元] row["name"] = vals[1, r]; row["age"] = vals[2, r]; ds.Tables["newTable"].Rows.Add(row); } // データソース設定 dataGridView1.DataSource = ds.Tables["newTable"]; // 条件を追加したデータテーブル間での複写-------------------------------------------------------- var newTable = dt.Clone(); // ベースループ foreach (var baseRow in dt.AsEnumerable()) { // ①特定の行を飛ばす if (baseRow["id"].ToString() == "02") continue; // ②特定の文字列を置き換える if(baseRow["age"].ToString() == "13") { baseRow["age"] = "26"; } newTable.ImportRow(baseRow); } // データセット作成 DataSet ds2 = new DataSet(); // データセットにテーブルを追加 ds2.Tables.Add(newTable.Copy()); // データソース設定 dataGridView2.DataSource = ds2.Tables["newTable"]; } } } |