2013-04-16 2 views
0

Я немного запутался в том, как использовать GroupBy в Linq. Мне нужно, чтобы отобразить название продукта и граф его предложения, я пришел с этимLINQ GroupBy, чтобы получить имя и граф

var context = new Model.Entities(); 
var query = from p in Product 
      join o in Offers on p.Prod_ID equals o.Prod_ID 
      orderby o.Prod_ID 
      select new { Name = p.Name, Offers = o.Prod_ID.Count()}; 
var products = query.ToList(); 

Теперь я не могу просто

Offers = o.Prod_ID.Count() 

Как отобразить строку с Название продукта, а также количество его предложений?

+0

btw [здесь] (http://www.dotnet-tricks.com/Tutorial/linq/UXPF181012-SQL-Joins-with-C) - хорошая статья о запросе Linq с примерами в linq и sql и результаты, показывающие каждый тип объединений –

ответ

1

Это звучит, как вы хотите присоединиться к группе вместо:

var query = from p in Product 
      join o in Offers on p.Prod_ID equals o.Prod_ID into offers 
      orderby p.Prod_ID 
      select new { Name = p.Name, Offers = offers.Count() }; 

Теперь после пункта join, у вас есть две переменные диапазона в объеме:

  • p (продукта)
  • offers (предложения для этого продукта)

Итак, я изменил порядок на p.Prod_ID - а затем только что подсчитал предложения в предложении select.

Обратите внимание, что таким образом вы все равно получите результат для продуктов без предложений, тогда как если бы вы выполняли прямое внутреннее соединение, они были бы полностью потеряны.