zoukankan      html  css  js  c++  java
  • 用LINQ( group by having) 找出Datatable中的重复数据

    private void butCF_Click(object sender, RoutedEventArgs e)
            {
                if (DatagridDatatable != null && DatagridDatatable.Rows.Count > 0)
                {
    //group by 日期,合同号,部门 having count(记录编号)>0 找出 日期 合同号 部门重复的记录
    var query = (from t in DatagridDatatable.AsEnumerable() group t by new { t1 = t.Field<DateTime>("日期"), t2 = t.Field<Int64>("合同号"), t3 = t.Field<string>("部门") } into m select new { 日期 = m.Key.t1, 合同号 = m.Key.t2, 部门 = m.Key.t3, 记录编号=m.First().Field<Decimal>("记录编号"),//这里要写这句话,否则查不出query rowcount = m.Count() } into c where c.rowcount>1 select c).ToList(); DataTable dt = new DataTable(); ////dt.Columns.Add("序号",System.Type.GetType( "System.Int32")); dt.Columns.Add("日期", System.Type.GetType("System.DateTime")); dt.Columns.Add("合同号", System.Type.GetType("System.Int64")); dt.Columns.Add("部门", System.Type.GetType("System.String")); dt.Columns.Add("记录编号", System.Type.GetType("System.Decimal")); dt.Columns.Add("销售金额", System.Type.GetType("System.Decimal")); foreach (var q in query) { DataRow[] dr_finds = DatagridDatatable.Select("日期='" + q.日期 + "' and 合同号=" + q.合同号 + " and 部门='" + q.部门+"'"); foreach (DataRow find in dr_finds) { DataRow dr = dt.NewRow(); dr["日期"] = find["日期"]; dr["合同号"] = find["合同号"]; dr["部门"] = find["部门"]; dr["记录编号"] = find["记录编号"]; dr["销售金额"] = find["销售金额"]; dt.Rows.Add(dr); } } if (dt.Rows.Count > 0) { fmCFJL win=new fmCFJL(dt); win.Show(); } else { MessageBox.Show("没有重复记录"); return; } } }
  • 相关阅读:
    EF关联
    nopcommerce v3.9中文包
    Android Activity切换与Activity间数据交互
    C#多线程的用法9-Semaphore
    C#多线程的用法8-线程间的协作AutoResetEvent
    C#多线程的用法7-线程间的协作ManualResetEvent
    C#多线程的用法6-线程间的协作Mutex
    C#多线程的用法5-线程间的协作Monitor
    C#多线程的用法4-线程间的协作lock快捷方式
    C#多线程的用法3-线程间的协作Join
  • 原文地址:https://www.cnblogs.com/yuanzhongkui/p/4015600.html
Copyright © 2011-2022 走看看