Группировка в LINQ to Entity Model

#linq #linq-to-entities

#linq #linq-to-entities

Вопрос:

У меня есть следующие поля в объекте модели сущности

MONTH_CHAR char(1) AVG_BALANCE int PROD_CAT_ID int FLG_PERS_COMM чат (1) ACCOUNT_COUNT int

Я хочу сгруппировать по столбцу MONTH_CHAR, я напишу для этого следующий SQL-запрос

SELECT MONTH_CHAR,
SUM(AVG_BALANCE) AS AVG_BALANCE,
MAX(PROD_CAT_ID) AS PROD_CAT_ID,
MAX(ACCOUNT_COUNT) AS ACCOUNT_COUNT,
FROM contactSummary
WHERE PROD_CAT_ID = 1
GROUP BY MONTH_CHAR

Я хочу, чтобы этот запрос был преобразован в запрос LINQ.

Заранее спасибо

Комментарии:

1. Я хочу, чтобы вы показали нам, что вы пробовали.

Ответ №1:

 from contact in context.Contacts
group contact by contact.Month_Char into g
select new 
{
    MonthChar = g.Key,
    AvgBalance = g.Average(x=>x.Avg_Balance)
    CatID = g.Max(x=>x.Prod_Cat_ID)
    AccountCount = g.Max(x=>x.Account_Count)
}
  

Комментарии:

1. Ваш код работал хорошо, но он вернул мне результат с анонимным типом, но я хочу, чтобы он преобразовывался в мой конкретный тип родительской таблицы `

2. Я хочу, чтобы возвращаемые результаты преобразовывались в мой конкретный тип родительской таблицы, т.Е. Тип contactSummary, который я использую после запроса LINQ (from res in contactSummary where (res.PROD_CAT_ID == 1) group res by res.MONTH_CHAR into g select new { MONTH_CHAR = g.Key, AVG_BALANCE = g.Sum(x => x.AVG_BALANCE), PROD_CAT_ID = g.Max(x => x.PROD_CAT_ID), FLG_PERS_COMM = "", ACCOUNT_COUNT = g.Max(x => x.ACCOUNT_COUNT) }).ToList();