我是LINQ世界的新手,因此我坚持将一个SQL查询转换为LINQ。 我的SQL查询是:
select COUNT(DISTINCT PAYER) as count,
PPD_COL FROM BL_REV
where BL_NO_UID = 1084
GROUP BY PPD_COL
所需的输出是:
Count PPD_COL
12 P
20 C
我在LINQ中写过类似的内容:
var PayerCount = from a in LstBlRev where a.DelFlg == "N"
group a by new { a.PpdCol} into grouping
select new
{
Count = grouping.First().PayerCustCode.Distinct().Count(),
PPdCol = (grouping.Key.PpdCol == "P") ? "Prepaid" : "Collect"
};
但它没有给我所需的输出。 PPD_COL
值P&的计数返回相同。 C.我在这里缺少什么?
答案 0 :(得分:1)
如下更改groupby
。在group
组中只有你需要的属性然后在thr by
中不需要创建一个匿名对象 - 只是你要分组的一个属性。
var PayerCount = from a in LstBlRev
where a.DelFlg == "N"
group a.PayerCustCode by a.PpdCol into grouping
select new
{
Count = grouping.Distinct().Count(),
PPdCol = grouping.Key == "P" ? "Prepaid" : "Collect"
};