专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > LINQ

怎么一次性将日累计、月累计、年累计统计出来

发布时间:2011-06-24 21:54:26 文章来源:www.iduyao.cn 采编人员:星星草
如何一次性将日累计、月累计、年累计统计出来
表结构如下:
 【ID】guid类型
 【Date】日期类型
 【Name】文本类型
 【Category】文本枚举类型
 【IsActive】逻辑类型
 【Quantity】整形


现要求:给定一个日期,统计出这个该日期的 Quantity 之和,截止到该日期的当月的 Quantity 之和,截止到该日期的当年的 Quantity 之和,按 Name 和 IsActive 分组,结果如下:

Name IsActive DaySum MonthSum YearSum
--------------------------------------
aaa true 100 1000 10000
aaa false 200 2000 20000
bbb true 300 3000 30000
bbb false 400 4000 40000
...



实体类型与数据表结构相同,请教用 linq 语句如何实现?

------解决方案--------------------
Try:

DateTime dt=...;//这是给定的日期
var query=from t in db.TableA
where System.Data.Linq.SqlClient.SqlMethods.DateDiffDay(dt,t.Date)<=365
group t by new {t.Name,t.IsActive} into g
select new 
{
Name=g.Key.Name,
IsActive=g.Key.IsActive,
DaySum=g.Where(m=>System.Data.Linq.SqlClient.SqlMethods.DateDiffDay(dt,m.Date)<=1).Count(),
MonthSum=g.Where(m=>System.Data.Linq.SqlClient.SqlMethods.DateDiffMonth(dt,m.Date)<=1).Count(),
YearSum=g.Count()
};

------解决方案--------------------
C# code

var result=from u in db.Table
                       group u by new 
                       {
                           u.Name,
                           u.IsActive
                       }
                       into g
                       select new 
                       {
                           DaySum =g.Sum(c=>c.Quantity),
                           MonthSum =(from n in g
                                      where n.Date.AddDays(-yourDate.Day)<n.Date<yourDate
                                      select n.Quantity).Sum(),
                           YearSum=(from n in g
                                    where n.Date.AddMonths(-yourDate.Month).AddDays(-yourDate.Day)<n.Date<yourDate
                                    select n.Quantity).Sum()
                       };
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: