2017-02-11 5 views
1

Im получает список кодов из таблицы и их соответствующий счет. Мне не нужно использовать разные в SQL, но если я не, добавьте это в запрос LINQ, я получаю много строк dupe.Почему мне нужен отчет с этим запросом 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