Sum и Group By в Linq для SQL? - PullRequest
       20

Sum и Group By в Linq для SQL?

17 голосов
/ 19 октября 2008

Просто начните работать с 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)

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

Ответы [ 2 ]

28 голосов
/ 19 октября 2008

Ответ

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

6 голосов
/ 19 октября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...