在LINQ查询中计算天数总和

Prashant Khadatkar

以下是我的数据表:

ResourceName    ContentName    ProjectName  PlanndStartDate PlannedEndDate   ActualStartDate    ActualEndDate   DesiredDate
ANIL            C-1479.doc     HP_WI_4141   2/24/2014       2/25/2014        2/24/2014          2/24/2014   2/23/2014
ANIL            C-1234.docx    HP_WI_3131   2/1/2014        2/12/2014        2/1/2014           2/13/2014   2/11/2014
CHETNA          C-1479.doc     HP_WI_4141   2/24/2014       2/25/2014        2/24/2014          2/24/2014   2/26/2014
CHETNA          C-1479.doc     HP_WI_4141   2/1/2014        2/12/2014        2/1/2014           2/13/2014   2/10/2014
CHETNA          C-14085.xlsx   HP_WI_5151   2/14/2014       2/28/2014        2/14/2014          2/26/2014   2/26/2014
GAURAV YADAV    C-1479.doc     HP_WI_4141   2/24/2014       2/25/2014        2/24/2014          2/24/2014   2/25/2014
GAURAV YADAV    C-1479.doc     HP_WI_4141   2/1/2014        2/12/2014        2/1/2014           2/13/2014   2/15/2014
GAURAV YADAV    C-14085.xlsx   HP_WI_5151   2/14/2014       2/28/2014        2/14/2014          2/26/2014   2/28/2014
NITIN           C-14077.pdf    HP_WI_2121   2/1/2014        2/12/2014        2/1/2014           2/13/2014   2/13/2014
SRINIVAS        C-14085.xlsx   HP_WI_5151   2/14/2014       2/28/2014        2/14/2014          2/26/2014   2/25/2014

现在,通过使用LINQ查询,我必须生成以下结果。

ResourceName    ContentName ProjectName PlanndStartDate PlannedEndDate  ActualStartDate ActualEndDate   DesiredDate TotalDays   GroupDays
ANIL            C-1479.doc  HP_WI_4141  2/24/2014       2/25/2014       2/24/2014        2/24/2014      2/23/2014        -1      -1
ANIL            C-1234.docx HP_WI_3131  2/1/2014        2/12/2014       2/1/2014         2/13/2014      2/11/2014        -2      -2
CHETNA          C-1479.doc  HP_WI_4141  2/24/2014       2/25/2014       2/24/2014        2/24/2014      2/26/2014         2      -1
CHETNA          C-1479.doc  HP_WI_4141  2/1/2014        2/12/2014       2/1/2014         2/13/2014      2/10/2014        -3      -1
CHETNA          C-14085.xlsxHP_WI_5151  2/14/2014       2/28/2014   2/14/2014                 2/26/2014      2/26/2014    0       0
GAURAV YADAV    C-1479.doc  HP_WI_4141  2/24/2014       2/25/2014       2/24/2014        2/24/2014      2/25/2014         1       3
GAURAV YADAV    C-1479.doc  HP_WI_4141  2/1/2014        2/12/2014       2/1/2014         2/13/2014      2/15/2014         2       3
GAURAV YADAV    C-14085.xlsxHP_WI_5151  2/14/2014       2/28/2014   2/14/2014       2/26/2014        2/28/2014            2       2
NITIN           C-14077.pdf HP_WI_2121  2/1/2014        2/12/2014       2/1/2014         2/13/2014      2/13/2014         0       0
SRINIVAS        C-14085.xlsxHP_WI_5151  2/14/2014       2/28/2014   2/14/2014            2/26/2014       2/25/2014       -1      -1

现在,结果应按“ ResouceName”,“ ContentName”和“ ProjectName”分组,并且“ TotalDays”列是“ DesireEndDate”和“ ActualEndDate”的差,而“ GroupDays”列是“ TodalDays”的总和。

请建议我该怎么做。谢谢。

蒂姆·施密特(Tim Schmelter)

GroupBy 和一个循环:

var groups = from row in table.AsEnumerable()
             let ResouceName = row.Field<string>("ResouceName")
             let ContentName  = row.Field<string>("ContentName") 
             let ProjectName  = row.Field<string>("ProjectName")
             group row by new{ ResouceName, ContentName, ProjectName } into Group
             select Group;

var tblResult = table.Clone();
tblResult.Columns.Add("TotalDays", typeof(int));
tblResult.Columns.Add("GroupDays", typeof(int);

foreach (var group in groups)
{ 
    int GroupDays = group.Sum(r => (r.Field<DateTime>("DesiredDate") - r.Field<DateTime>("ActualEndDate")).Days);
    foreach(DataRow row in group)
    {
        DateTime PlanndStartDate = row.Field<DateTime>("PlanndStartDate");
        DateTime PlannedEndDate = row.Field<DateTime>("PlannedEndDate");
        DateTime ActualStartDate = row.Field<DateTime>("ActualStartDate"); 
        DateTime ActualEndDate = row.Field<DateTime>("ActualEndDate");
        DateTime DesiredDate = row.Field<DateTime>("DesiredDate");
        TimeSpan Total = DesiredDate - ActualEndDate;
        tblResult.Rows.Add(group.Key.ResouceName, group.Key.ContentName, group.Key.ProjectName, PlanndStartDate, PlannedEndDate, ActualStartDate, ActualEndDate, DesiredDate, Total.Days, GroupDays);
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在SQL查询中计算治疗天数

来自分类Dev

如何在Elixir中计算查询结果的总和?

来自分类Dev

如何在特定 ID 的子查询中计算总和?

来自分类Dev

在R中计算每月的天数

来自分类Dev

如何计算此linq to sql查询的总和?

来自分类Dev

foreach中计算列的总和

来自分类Dev

在PostgreSQL中计算每日总和

来自分类Dev

在excel中计算负温度的天数

来自分类Dev

在 Postgres 中计算每个客户的记录天数

来自分类Dev

在一个查询中计算2个汇总总和的差

来自分类Dev

计算每个类别的天数总和

来自分类Dev

在BigQuery中计算分区上的运行总和

来自分类Dev

在MS-SQL中计算累积总和

来自分类Dev

如何在Excel中计算总和

来自分类Dev

在ABBYY Flexicapture中计算脚本中的总和

来自分类Dev

如何在Excel中计算加权总和?

来自分类Dev

在 JavaScript 中计算数组的数值总和

来自分类Dev

在 Excel 中计算选定值的总和

来自分类Dev

如何在Django Orm中计算总和以及累计总和

来自分类Dev

这是在php中计算天数的正确方法吗

来自分类Dev

在Python Pandas中的DataFrame中计算到某个日期的天数?

来自分类Dev

如何在PHP中计算未来X天数?

来自分类Dev

这是在php中计算天数的正确方法吗

来自分类Dev

在 Case When 子句中计算 SQL SERVER 中的天数

来自分类Dev

在 SAS 中计算一个月中的天数

来自分类Dev

如何在 SQL 中计算天数到月数?

来自分类Dev

在MySQL中的一个查询中计算两个不同的总和与两个不同的地方

来自分类Dev

SQL查询总和计算字段

来自分类Dev

LINQ对子元素的总和查询