C# DataTable filter conditions, simple calculation

//创建表及添加数据
  DataTable dataTable = new DataTable();
  dataTable.Columns.Add("姓名");
  dataTable.Columns.Add("性别");
  dataTable.Columns.Add("籍贯");
  dataTable.Columns.Add("年龄");
  dataTable.Columns.Add("学历");

  dataTable.Rows.Add("张三", "男", "北京", "18", "大专");
  dataTable.Rows.Add("李四", "男", "河南", "45", "高中");
  dataTable.Rows.Add("王五", "女", "山西", "58", "大专");
  dataTable.Rows.Add("张飞", "男", "山西", "21", "小学");
  dataTable.Rows.Add("刘能", "男", "山东", "78", "小学");
  dataTable.Rows.Add("肉丝", "女", "河南", "54", "大专");
  dataTable.Rows.Add("杰克", "男", "山西", "24", "初中");
  dataTable.Rows.Add("船长", "男", "河南", "78", "大专");
   
//筛选学历为大专的行
DataRow [] dataRow =  dataTable.Select("学历 = '大专'");

or:

DataView dataView = dataTable.DefaultView;
dataView.RowFilter = "学历 = '大专'";

Insert picture description here

/*查询各城市大专学历总人数
 
*/
  DataTable dataTable_city= dataTable.DefaultView.ToTable(true, "籍贯");//ToTable(bool distinct, params string[] columnNames)columnNames是返回的列,可以是数组,true表示去重复,默认false。
  
  dataTable_city.Columns.Add("大专人数");
  for (int i = 0; i < dataTable_city.Rows.Count; i++)
   {
    
    
       string city = dataTable_city.Rows[i]["籍贯"].ToString();
       //Compute(string expression, string filter);
       // expression:
       //     要计算的表达式。
       //   filter:
       //     筛选器来限制在表达式中计算的行。
       string num = dataTable.Compute("count(学历)", "学历 = '大专' and 籍贯 = '" + city + "'").ToString();
       dataTable_city.Rows[i]["大专人数"] = num ;
   }

Insert picture description here

 //查询各城市大专学历总人数
DataTable dataTable_city = dataTable.DefaultView.ToTable(true, "籍贯");
DataTable dataTable_education = dataTable.DefaultView.ToTable(true, "学历");
 for (int i = 0; i < dataTable_city.Rows.Count; i++)
 {
    
    
      string city = dataTable_city.Rows[i]["籍贯"].ToString();
      for (int j = 0; j < dataTable_education.Rows.Count; j++)
      {
    
    
          string education = dataTable_education.Rows[j]["学历"].ToString();
          if (!dataTable_city.Columns.Contains(education + "人数"))//判断表是否存在各学历人数列,不存在就添加
          {
    
    
              dataTable_city.Columns.Add(education + "人数");
          }

          string num= dataTable.Compute("count(学历)", "学历 = '"+ education + "' and 籍贯 = '" + city + "'").ToString();
          dataTable_city.Rows[i][education + "人数"] = num;
       }
    
  }

Insert picture description here

Guess you like

Origin blog.csdn.net/luan0125/article/details/109316326