栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

DataTable Linq Group分组并 Count 计数写法

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

DataTable Linq Group分组并 Count 计数写法

我的数据库是这样的,来自两个数据库中的表

库D中表A : 设备状态表
字段:
{
mineid --区域id
…
}
数据:
{
1,1,1,2,2
}

库C中表B : 区域表
字段:
{
minecode --区域ID
area --区域名称
…
}
数据:
{
1 河南 ,2 北京
}

库D表A中筛选出来如下数据
{1,1,1,2,2}

而我想要的是以下的格式:

河南(3),北京(2)

数字代表的个数,下边的代码块中就是处理方法

var area = "";   //定义一个保存输出的字段
datatable dt = new datatable();  //假设dt就是筛选出来的来自库D中的数据
var query = from t in 库D中查询出来的.AsEnumerable()
                        group t by new { t1 = t.Field("mineid") } into m
                        select new
                        {
                            MineID = m.Key.t1,
                            count = m.Count()
                        };
            area = "'(";  //这里开始拼接字符串
            foreach (var q in query)  //遍历循环分组统计出来的数据
            {
                string sql = "select area from (库C) where mineCode = '" + q.MineID + "'";   //拼接sql语句
                DataTable dtS;
                using (MAction action = new MAction(sql, conStrBase))
                {
                    dtS = action.Select();
                    area += "" + dtS.Rows[0]["area"] + "(" + q.count + "),"; //拼接省份+个数
                }
            }
            if (area.Length > 2)
                area = area.Substring(0, area.Length - 1) + ")'"; //拼接结尾字符串
            else
                area = "''";

最后输出出来的结果就是 河南(3),北京(2) 这种

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/984324.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号