我一直在这里查看其他线程以了解如何在 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
is a List<T>
其中包含,除其他列外,ContactID
and Amount
,但这是我对此查询唯一关心的两个。
问题是,在里面select new
, the g.
不会给我原始列表中的任何列,pending
。当我尝试时,我得到:
分组<int, LeadPurchases>
不包含 ContactID 的定义,也没有扩展方法等等等等......
这是我试图模拟的 SQL:
SELECT
lp.PurchasedFromContactID,
SUM (lp.Amount)
FROM
LeadPurchases lp
GROUP BY
lp.PurchasedFromContactID
您分组的依据是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
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)