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/5/excel/29.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# iGroup不包含的定义_C#_Linq - Fatal编程技术网

C# iGroup不包含的定义

C# iGroup不包含的定义,c#,linq,C#,Linq,我一直在研究其他线程,以了解如何在linq中进行GroupBy。我正在遵循适用于其他人的确切语法,但是,它不起作用 问题是: var results = from p in pending group p by p.ContactID into g let amount = g.Sum(s => s.Amount) select new PaymentItemModel {

我一直在研究其他线程,以了解如何在linq中进行GroupBy。我正在遵循适用于其他人的确切语法,但是,它不起作用

问题是:

var results = from p in pending
              group p by p.ContactID into g
              let amount = g.Sum(s => s.Amount)
              select new PaymentItemModel
              {
                  ContactID = g.ContactID, // <--- Error here
                  Amount = amount
              };

您是根据
ContactID
进行分组的,因此它应该是结果的键,因此您必须使用
g.Key
而不是
g.ContactID
;这意味着查询应该如下所示:

from p in pending
              group p by p.ContactID into g
              let amount = g.Sum(s => s.Amount)
              select new PaymentItemModel
              {
                  ContactID = g.Key,
                  Amount = amount
              };
更新:

如果要基于多个列执行分组,则GroupBy子句如下所示:

group p by new
{
    p.ContactID,
    p.Field2,
    p.Field3
}into g
select new PaymentItemModel()
{
    ContactID = g.Key.ContactID,
    anotherField = g.Key.Field2,
    nextField = g.Key.Field3       
};

你需要
g.Key.ContactID
来理解我:int不包含ContactIDSorry的定义-我没想清楚。它应该是简单的
ContactID=g.Key
,因为您只按一个值分组OK,这看起来很有希望!我会做一些测试,然后再报告。谢谢大家!@凯西·克鲁克斯顿:酷,快乐,亲爱的,真管用!我会在3分钟内把这个标记为答案。同时,我知道这是对我的OP的补充,但是。。。如果我想按更多的列分组呢?您是否介意添加到您的答案中,以显示除了ContactID之外再按一列分组会是什么样子?@CaseyCrokston:是的,我可以帮助您,请参阅我的答案中的更新如何以列表形式返回此示例
group p by new
{
    p.ContactID,
    p.Field2,
    p.Field3
}into g
select new PaymentItemModel()
{
    ContactID = g.Key.ContactID,
    anotherField = g.Key.Field2,
    nextField = g.Key.Field3       
};