Подтвердить что ты не робот

Sum и Group By в Linq to SQL?

Просто начинайте с Linq to SQL, так что простите вопрос новичка. Я пытаюсь воспроизвести следующий (рабочий) запрос в Linq to SQL (VB.NET):

Select
    f.Title,
    TotalArea = Sum(c.Area)
From Firms f
Left Join Concessions c on c.FirmID = f.FirmID
Group By f.Title
Order by Sum(c.Area) DESC

(У фирмы много концессий, у Концессии есть площадь в гектарах. Мне нужен список фирм, начиная с тех, у которых наибольшая общая площадь всех их уступок.)

Я представляю что-то вроде этого как эквивалент Linq to SQL (псевдокод)

From f As Firm In Db.Firms _
Order By f.Concessions.Sum(Area)

... но это не так. Может ли кто-нибудь указать мне в правильном направлении?

4b9b3361

Ответ 1

Ответ

Здесь правильный эквивалент Linq to SQL

From c In Concessions _
Join f In Firms on f.FirmID equals c.FirmID _
Group by f.Title _
Into TotalArea = sum(c.OfficialArea)  _
Order by TotalArea Descending _
Select Title, TotalArea

Спасибо @CMS за то, что указали мне на LinqPad - отличный инструмент. Вы просто указываете его на свою базу данных, и вы выключены и запущены. Включены не только сотни образцов, но вы можете запускать их против включенных баз данных. Я смог выполнить вышеупомянутый запрос всего за несколько минут, начиная с предоставленных образцов.

Ответ 2

Здесь вы можете найти множество примеров об использовании агрегатных функций и группировки, кроме того, я рекомендую вам очень LinqPad, это отличный инструмент для проверки ваших запросов "на лету", и это очень хороший способ узнать LINQ, он поставляется с предустановленными 200 примерами.