//创建表及添加数据
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("学历 = '大专'");
或者:
DataView dataView = dataTable.DefaultView;
dataView.RowFilter = "学历 = '大专'";
/*查询各城市大专学历总人数
*/
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 ;
}
//查询各城市大专学历总人数
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;
}
}