2017-02-11 49 views
1

Im从表中获取代码列表及其各自的计数。我不需要在SQL中使用独特的,但如果我不不要在LINQ查询中添加这个,我得到许多重复行。为什么我需要使用此LINQ查询来区分,但不使用SQL

那么,为什么我需要在LINQ查询上的不同调用?

SQL

SELECT COUNT(*) AS ServiceCodeCnt, d.ServiceCode 
FROM dbo.BackOrderItem d 
GROUP BY d.ServiceCode, d.Model 
HAVING d.Model ='UUTTIISJWW' 

LINQ(通过LINQpad)

void Main() 
{ 

    var retval = (from a in BackOrderItems where a.Model == "UUTTIISJWW" 
       group a by new {a.ServiceCode, a.Model} into grp1 
       from b in grp1 
        select new {Code = b.ServiceCode, Count = grp1.Count() }).ToList().Distinct();    


    retval.Dump();    

} 

回答

3

声明...

from b in grp1 

...平展分组。因此,您可以选择每个组中的所有单独行,每个行都有其组的数量。

只是删除这一说法,所以就变成:

var retval = (from a in BackOrderItems where a.Model == "UUTTIISJWW" 
      group a by a.ServiceCode into grp1 
      select new 
        { 
         Code = grp1.Key, 
         Count = grp1.Count() 
        }) 
      .ToList();    

注意,我还从分组取出Model。这不是必要的,因为你只能筛选出一个Model

+0

是的,就是这样,谢谢 – bitshift