首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# 合併兩個結構相同 CSV 到單一 DataGridView:DataTable.Merge 實現

     編輯:程式設計綜合問答

核心代碼

private DataTable LoadAndMergeCsv(string file1, string file2) {
    var dt1 = CsvToDataTable(file1);
    var dt2 = CsvToDataTable(file2);
    
    // 關鍵:列名、順序、類型必須完全一致
    dt1.Merge(dt2, false, MissingSchemaAction.Ignore);
    return dt1;
}

private DataTable CsvToDataTable(string path) {
    var dt = new DataTable();
    using (var sr = new StreamReader(path, Encoding.GetEncoding("GB2312"))) {
        string header = sr.ReadLine();
        if (header == null) return dt;
        foreach (var col in header.Split(',')) dt.Columns.Add(col.Trim());
        
        string line;
        while ((line = sr.ReadLine()) != null) {
            var row = dt.NewRow();
            var vals = line.Split(',');
            for (int i = 0; i < Math.Min(vals.Length, dt.Columns.Count); i++)
                row[i] = vals[i].Trim();
            dt.Rows.Add(row);
        }
    }
    return dt;
}

// 綁定
dataGridView1.DataSource = LoadAndMergeCsv("a.csv", "b.csv");

關鍵點

  1. Merge 參數:false 表示不保留變更 (覆蓋),MissingSchemaAction.Ignore 忽略缺失列
  2. CSV 編碼常為 GB2312/UTF-8,需按實際調整
  3. 大文件建議用 TextFieldParser (Microsoft.VisualBasic) 或 CsvHelper 庫

替代方案:SQL 查詢合併

// 若 CSV 已導入臨時表
SELECT * FROM TempA
UNION ALL
SELECT * FROM TempB;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved