用 linq 进行 group by 查询, sum() 可以合计数值类型字段,但如果是字符串,我向将字符串都 拼合 起来,怎么做呢?------------------------------------------------------------------------------------------------------
假设 1 个 DataTable:dt1
-----------------------------------------
id parent_id amount level
-----------------------------------------
数值型 string 类型按上级 id 进行统计:
var query = from NewDt in dt.AsEnumerable() group NewDt by NewDt.Field<int>("parent_id") into gg select new { parent_id = gg.Key, amount = gg.Sum(NewDt => NewDt.Field<double>("amount")) }; grid.DataSource = query.AsQueryable();
grid.DataBind();这个查询,按照 parent_id 统计出来了 sum(amount)。
--------------------------------------------------------------------------------------------------------但是,我想统计 level 字段,将字符串都 拼合 起来,如何做的?我想要的结果:
原 DataTable:
-----------------------------------------
id parent_id amount level
-----------------------------------------
1 1 1 abc
2 1 0 xyz
3 2 10 甲乙丙
4 2 9 春秋冬
Linq 查询后的结果:
------------------------------------------
parent_id level
------------------------------------------
1 abcxyz
2 甲乙丙春秋冬
假设 1 个 DataTable:dt1
-----------------------------------------
id parent_id amount level
-----------------------------------------
数值型 string 类型按上级 id 进行统计:
var query = from NewDt in dt.AsEnumerable() group NewDt by NewDt.Field<int>("parent_id") into gg select new { parent_id = gg.Key, amount = gg.Sum(NewDt => NewDt.Field<double>("amount")) }; grid.DataSource = query.AsQueryable();
grid.DataBind();这个查询,按照 parent_id 统计出来了 sum(amount)。
--------------------------------------------------------------------------------------------------------但是,我想统计 level 字段,将字符串都 拼合 起来,如何做的?我想要的结果:
原 DataTable:
-----------------------------------------
id parent_id amount level
-----------------------------------------
1 1 1 abc
2 1 0 xyz
3 2 10 甲乙丙
4 2 9 春秋冬
Linq 查询后的结果:
------------------------------------------
parent_id level
------------------------------------------
1 abcxyz
2 甲乙丙春秋冬
解决方案 »
- 怎么提取XML中 <string>11℃/21℃</string> 最大值与最小值
- .net什么情况下后台获取不到file文件
- 小弟不才,请问怎么在winform下设置datagridview复式多层表头
- vs2005语音开发 speech Sdk?
- 怎样播放音频文件
- DataGrid格式控制,急
- winform 中 如何对 表格 内容的样式 操作 ——————————————————————————————————————————————————— ?
- WPF多个控件绑定到一个数据源和路径的问题
- 有个倒数据的问题
- xml中#{}代表什么意思????
- 初学递归。。。。
- 关于用winform登陆web网站的问题??
比如我根据parent_id把集合出来来后,然后对这个集合进行操作
数据库用stuff来很好实现你的level 字段
var query = from NewDt in dt.AsEnumerable()
group NewDt by NewDt.Field<int>("parent_id")
into gg
select new
{
parent_id = gg.Key,
amount = gg.Sum( r => r.Field<int>("amount") ),
level = gg.Concatenate( r => r.Field<string>("level") )
};static class MyHelper
{
public static string Concatenate(this IEnumerable<DataRow> source, Func<DataRow, string> selector)
{
StringBuilder sb = new StringBuilder();
foreach (DataRow row in source)
{
sb.Append(selector(row));
}
return sb.ToString();
}
}
传说 CSDN 高手很多,果不其然!!