我一直在寻找其他线程,以了解如何在linq中进行GroupBy。我正在遵循对其他人有用的精确语法,但是,它不起作用。
以下是查询:
pending
List<T>
是一个ContactID
,其中包含Amount
和select new
等列,但这些是我唯一关心此查询的两个。
问题是,在g.
内,pending
不会给我原始列表中的任何列<int, LeadPurchases>
。当我尝试时,我得到:
IGrouping
SELECT lp.PurchasedFromContactID, SUM (lp.Amount) FROM LeadPurchases lp GROUP BY lp.PurchasedFromContactID
不包含ContactID的定义,也没有扩展方法blah blah blah ...
这是我试图模仿的SQL:
{{1}}
答案 0 :(得分:4)
您在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
};