做一个考勤表,表结构都是一样的,第一列姓名,其他列迟到,早退是布尔值。
有多个DataTable,如何统计每个人迟到,早退的次数。

解决方案 »

  1.   

    对这些表做union运算
    dt1.AsEnumerable().Union(dt2.AsEnumerable())...
      

  2.   

    能解释下union吗。。我看的好像是并集,能得到1以上值吗?
    我现在能得出1个表数据了,要得到几个得用到三维数组了好麻烦。            DataTable T = new DataTable();
                DataSet ds1 = new DataSet();
                foreach (DataGridViewColumn dgvc in m_TV.Columns)
                {
                    DataColumn dc = new DataColumn();
                    dc.ColumnName = dgvc.DataPropertyName;
                    T.Columns.Add(dc);
                }
                foreach (ListViewItem it in m_list.SelectedItems)
                {
                    DataTable DT = (it.Tag as DataTable);
                    int i = 0; 
                    DT.TableName = "DT" + i.ToString();
                    i++;
                    ds1.Tables.Add(DT);
                    }
                    for (int a = 0; a < m_list.SelectedItems.Count; a++){
                       
                        foreach (DataRow tRow in ds1.Tables[a].Rows)
                        {
                            int i = 0;
                            DataRow dr = T.NewRow();
                            foreach (DataColumn dc in T.Columns)
                            {
                                if (tRow[i].ToString() == "True" || tRow[i].ToString() == "False")
                                {
                                    int j = 0;
                                    if (tRow[i].ToString() == "True")
                                    {
                                        j++;
                                    }
                                    dr[dc] = j;
                                }                            else
                                { 
                                    dr[dc] = tRow[i]; 
                                }
                                i++;                        }
                            T.Rows.Add(dr);
                        }
                     }