使用linq 对 DataTable 中的数据进行 查询 与 分类求合

时间:2020-12-31 16:49:12

  A:linq 的查询方式写得可以非常简洁如下所示:

  DataTable dt = null;
        private void XtraForm1_Load(object sender, EventArgs e)
        {

//1.打开linq 连到数据库。
            MyFLYDataContext dataContext = new MyFLYDataContext();
            var v1 = from t in dataContext.T2_Elderly select t;

// 2.把得到的数据变成 DataTable
            dt = DataFunction.LINQToDataTable(v1);

// 绑到gridControl1中
            this.gridControl1.DataSource = dt;
           
        }

B: 这时,对 DataTable 进行查询与分类求合

private void simpleButton1_Click(object sender, EventArgs e)
        {
            //1.使用 DataTable 查询,这里用了多个列的列子。
            var query =
               from q in dt.AsEnumerable()
               group q by new {a= q.Field<string>("Status"), b = q.Field<string>("ZWStatus")} into r
               select new
               {
                   a = r.Key.a,
                   b = r.Key.b,
                   _qCount = r.Count()
               };

//2.把得到的数据变成 DataTable
            DataTable dts = DataFunction.LINQToDataTable(query);
            this.gridView1.Columns.Clear();
            this.gridControl1.DataSource = dts;

}

c: 如果还原可以这样做:

private void simpleButton2_Click(object sender, EventArgs e)
        {
            this.gridView1.Columns.Clear();
            this.gridControl1.DataSource = dt;
        }

d: 这样的好处在于,不需要再次查数据库,就可以对已经有的数据进行分类求合。以及查询。