我一直在这里查看其他线程,以学习如何在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
};pending是一个包含ContactID和Amount等列的List<T>,但这是我唯一关心的两个查询。
问题是,在select new中,g.不会给我原始列表pending中的任何列。当我尝试的时候,我得到:
IGrouping
<int, LeadPurchases>不包含ContactID的定义,也没有扩展方法blah .
这就是我试图模仿的SQL:
SELECT
lp.PurchasedFromContactID,
SUM (lp.Amount)
FROM
LeadPurchases lp
GROUP BY
lp.PurchasedFromContactID发布于 2017-01-19 04:33:36
您是根据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
};https://stackoverflow.com/questions/41733775
复制相似问题