foreach 根据条件选值

yworknetj 2010-06-10 03:32:02
假设有一个 foreach(DataRow dRow in dRows) 其中包含 这些数据,当名称相同时取一个名称但金额相加(显示例如:名称:龙阳路,数量:3+2+4+3)

时间 名称 数量 金额 百分百 结果: 开始时间 名称 数量 金额 百分百 最近 时间
2006年03月 龙阳路 3 200 2 2006年03月 龙阳路 12 1700 8 2006年
2006年04月 龙阳路 2 500 2
2006年05月 龙阳路 4 500 2
2006年06月 龙阳路 3 500 2
2006年07月 罗山路 1 30,333 1
2006年02月 罗山路 1 30,333 1
2006年03月 罗山路 1 30,333 1
2006年04月 罗山路 1 30,333 1
2006年08月 龙阳路1 3 97,500 2
2006年09月 龙阳路1 3 97,500 2
2006年10月 龙阳路2 3 97,500 2
2006年11月 龙阳路2 3 97,500 2
2006年12月 龙阳路2 3 97,500 2
2007年01月 龙阳路3 3 97,500 2
2007年02月 龙阳路3 3 97,500 2
...全文
177 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lostuser 2010-06-10
  • 打赏
  • 举报
回复

Dictionary<string, int> result = new Dictionary<string, int>();

foreach (DataRow dRow in dRows)
{
if (result.Contains(dRow[1]))
{
result[dRow[1]] += dRow[2];
}
else
{
result.Add(dRow[1], dRow[2]);
}
}


但是能在SQL中解决最好。
APP开发王 2010-06-10
  • 打赏
  • 举报
回复

友情帮顶下!顺便学习学习!
Tanhualin 2010-06-10
  • 打赏
  • 举报
回复
没明白
yworknetj 2010-06-10
  • 打赏
  • 举报
回复

select {[Measures].[投放金额],[Measures].[投放次数]}on columns,filter({[媒体信息].[名称].children}*{[媒体信息].[投放类型].children}*{[日期].[月份].children},[Measures].[投放次数]> 0) on rows from [ReportCenter] where 条件

yworknetj 2010-06-10
  • 打赏
  • 举报
回复
各位大侠,我用的是 MDX :
select {[Measures].[投放金额],[Measures].[投放次数]}on columns,filter({[媒体信息].[名称].children}*{[媒体信息].[投放类型].children}*{[日期].[月份].children},[Measures].[投放次数]>0) on rows from [ReportCenter]  where 条件 }
丰云 2010-06-10
  • 打赏
  • 举报
回复
在数据库检索的时候就统计好!!
PxxxP 2010-06-10
  • 打赏
  • 举报
回复
LINQ
q107770540 2010-06-10
  • 打赏
  • 举报
回复
用一个hashtable key存储名字 value存储数量

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧