C# dataTable的linq聯合查詢,插入到新的dataTable中
阿新 • • 發佈:2018-12-06
[csharp]
view plain
copy
- //獲取要比對的資料
- DataTable dataTable_yh = (DataTable)gridControl1.DataSource;
- DataTable dataTable_tg = (DataTable)gridControl2.DataSource;
- //是否有必要比
- if (dataTable_yh == null || dataTable_yh == null)
- {
- MessageBox.Show("沒有需要比較的資料");
- return;
- }
- //整車整備質量不一致
- var zczbzlData = from d in dataTable_yh.AsEnumerable()
- join dd in dataTable_tg.AsEnumerable()
- on d.Field<string>("CLXH") equals dd.Field<string>("CLXH")
- where d.Field<string>("RLLX") == dd.Field<string>("RLLX")
- && d.Field<string>("ZCZBZL") != dd.Field<string>("ZCZBZL")
- select new
- {
- VIN = d.Field<string>("VIN"),
- CLXH = d.Field<string>("CLXH"),
- RLLX = d.Field<string>("RLLX"),
- YH_ZCZBZL = d.Field<string>("ZCZBZL"),
- TG_ZCZBZL = dd.Field<string>("ZCZBZL")
- };
- this.gcTable1.DataSource = zczbzlData.ToList();
- //油耗實際值不一致
- var zhgkData = from d in dataTable_yh.AsEnumerable()
- join dd in dataTable_tg.AsEnumerable()
- on d.Field<string>("CLXH") equals dd.Field<string>("CLXH")
- where d.Field<string>("RLLX") == dd.Field<string>("RLLX")
- && d.Field<string>("ZHGK") != dd.Field<string>("ZHGK")
- select new
- {
- VIN = d.Field<string>("VIN"),
- CLXH = d.Field<string>("CLXH"),
- RLLX = d.Field<string>("RLLX"),
- YH_ZHGK = d.Field<string>("ZHGK"),
- TG_ZHGK = dd.Field<string>("ZHGK")
- };
- this.gcTable2.DataSource = zhgkData.ToList();
- //通告中不存在
- var cllxArr = dataTable_tg.AsEnumerable().Select(d => d.Field<string>("CLXH")).ToArray();
- var rllxArr = dataTable_tg.AsEnumerable().Select(d => d.Field<string>("RLLX")).ToArray();
- var errorData = from d in dataTable_yh.AsEnumerable()
- where !cllxArr.Contains(d.Field<string>("CLXH"))
- || !rllxArr.Contains(d.Field<string>("RLLX"))
- select new
- {
- VIN = d.Field<string>("VIN"),
- CLXH = d.Field<string>("CLXH"),
- RLLX = d.Field<string>("RLLX")
- };
- this.gcTable3.DataSource = errorData.ToList();
- //比較完初始選中的tab頁
- int selectTabIndex = 1;
- if (zczbzlData.Count() < 1)
- {
- selectTabIndex = 2;
- if (zhgkData.Count() < 1)
- {
- selectTabIndex = 3;
- if (errorData.Count() < 1)
- {
- MessageBox.Show("資料一致");
- return;
- }
- }
- }
- xtraTabControl1.SelectedTabPageIndex = selectTabIndex;