需要帮助将SQL查询转换为LINQ

时间:2017-02-02 07:09:03

标签: sql linq lambda

我是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.我在这里缺少什么?

1 个答案:

答案 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"
                 };