LINQ To SQL "Группировать по" - PullRequest
0 голосов
/ 12 июня 2009

Интересно, кто-нибудь может мне помочь? Я хочу повторить следующий SQL-запрос, используя LINQ в VB.Net. Мне немного неясно, как выполнять подзапросы / агрегаты.

Спасибо

SELECT  *
FROM    Server S
    INNER JOIN ServerHDD H
            ON S.Server_ID = H.Server_ID
    INNER JOIN (SELECT      MAX(ServerHDD_ID) AS ServerHDD_ID
                            FROM    ServerHDD
                            GROUP BY Server_ID, Letter) Filter
            ON H.ServerHDD_ID = Filter.ServerHDD_ID
ORDER BY S.Hostname, H.Letter

Получил это, как показано ниже в C # => , необходимо преобразование VB.Net, пожалуйста .

from S in SERVER
join H in SERVERHDD on S.Server_ID equals H.Server_ID
join FILTER in 
    (from s in SERVERHDD group s 
            by new {s.Server_ID, s.Letter} 
            into groupedServerHDD select new 
                    {
                            SERVERHDD_ID = groupedServer.Sum(gS=>gS.ServerHDD_ID)
                    }
    )
     on H.ServerHDD_ID equals FILTER.SERVERHDD_ID 
     orderby S.Hostname, H.Letter
     select S

Ответы [ 2 ]

0 голосов
/ 12 июня 2009

Это моя самая любимая страница по этой теме. Я люблю LINQ to SQL (и хотел бы, чтобы они намеревались продолжать поддерживать его через Entity Framework ...) http://msdn.microsoft.com/en-us/vbasic/bb688085.aspx. На этой странице вы найдете все ответы на ваши запросы. Трудно отформатировать запрос здесь без чего-либо, с чем можно было бы его проверить!

Ваши внутренние объединения исчезают благодаря простому синтаксису соединения LtS. Вы можете сказать .Max () на свой внутренний выбор или Max (псевдо-функтоид) здесь так:

From p2 In g _
Where p2.UnitPrice = g.Max(Function(p3) p3.UnitPrice) _
Select p2
0 голосов
/ 12 июня 2009

Есть несколько инструментов обучения LINQ, которые довольно круты.

Это мой любимый ... LinqPad . Но вы также можете проверить Linqer .

Вы сможете вставить свой код в одно из этих приложений, и оно покажет вам, как его конвертировать. Надеюсь, они пригодятся :)

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