Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ过滤和聚合_C#_Linq_Grouping_Aggregation - Fatal编程技术网

C# LINQ过滤和聚合

C# LINQ过滤和聚合,c#,linq,grouping,aggregation,C#,Linq,Grouping,Aggregation,我有一个项目列表,可以这样表示: ClientNo Name Date Time 0001 Mike 01/12/2000 6 0002 Dave 01/12/2000 12 0001 Mike 01/12/2000 10 0002 Dave 02/12/2000 6 from p in ListofModel group p by new { p.

我有一个项目列表,可以这样表示:

ClientNo     Name     Date        Time
0001         Mike     01/12/2000    6
0002         Dave     01/12/2000   12
0001         Mike     01/12/2000   10
0002         Dave     02/12/2000    6
from p in ListofModel
group p by new { p.ClientNo, p.Date, p.Name } into g
orderby g.key.Date
select new ModelClass
{
    ClientNo = g.Key.ClientNo,
    Name = g.key.Name,
    Date = g.Key.Date,
    Time = g.Sum(x => x.Time)
}
是否可以使用LINQ对其进行分组和聚合,使其看起来像这样

ClientNo     Name     Date        Time
0001         Mike     01/12/2000  16
0002         Dave     01/12/2000  12
0002         Dave     02/12/2000   6
我试图为每个客户返回一个特定日期的汇总行。我一直在摆弄下面的东西,但没能把它弄对。不幸的是,我对LINQ的了解很差

var result = from p in ListofModel
             group p by new { p.ClientNo, p.Date, p.Name, p.Time } into g
             orderby g.key.Date
             select new ModelClass
             {
                 ClientNo = g.Key.ClientNo,
                 Name = g.key.Name,
                 .....
             }

毫不奇怪,这并没有给我想要的结果。如何修复它?

我认为它应该是这样的:

ClientNo     Name     Date        Time
0001         Mike     01/12/2000    6
0002         Dave     01/12/2000   12
0001         Mike     01/12/2000   10
0002         Dave     02/12/2000    6
from p in ListofModel
group p by new { p.ClientNo, p.Date, p.Name } into g
orderby g.key.Date
select new ModelClass
{
    ClientNo = g.Key.ClientNo,
    Name = g.key.Name,
    Date = g.Key.Date,
    Time = g.Sum(x => x.Time)
}

您不希望按时间分组,因此不应将其包含在组键中。

我认为它应该如下所示:

ClientNo     Name     Date        Time
0001         Mike     01/12/2000    6
0002         Dave     01/12/2000   12
0001         Mike     01/12/2000   10
0002         Dave     02/12/2000    6
from p in ListofModel
group p by new { p.ClientNo, p.Date, p.Name } into g
orderby g.key.Date
select new ModelClass
{
    ClientNo = g.Key.ClientNo,
    Name = g.key.Name,
    Date = g.Key.Date,
    Time = g.Sum(x => x.Time)
}
您不希望按时间分组,因此不应将其包含在组键中。

尝试以下操作:

var result = from p in ListofModel
             group p by new { p.ClientNo, p.Name, p.Date } into g
             orderby g.Key.Date
            select new ModelClass
            {
             ClientNo = g.Key.ClientNo,
             Name = g.Key.Name,               
             Date = g.Key.Date,
             Time = g.SUM(t => t.Time)                  
            }
试试这个:

var result = from p in ListofModel
             group p by new { p.ClientNo, p.Name, p.Date } into g
             orderby g.Key.Date
            select new ModelClass
            {
             ClientNo = g.Key.ClientNo,
             Name = g.Key.Name,               
             Date = g.Key.Date,
             Time = g.SUM(t => t.Time)                  
            }

-1:不编译,不符合OP@Daniel希尔加思。我同意你的看法。我没有在GROUPBY子句中添加被选中的列(不包括聚合的列)-1:不会编译并且不符合OP@Daniel希尔加思。我同意你的看法。我没有在GROUPBY子句中添加被选中的列(不包括聚合的列)