Преобразование SQL-запроса в лямбда-оператор Linq - PullRequest
1 голос
/ 07 марта 2012

Я пытаюсь преобразовать следующий оператор SQL в запрос linq, но по какой-то причине я не могу заставить его работать !!

SELECT     o.ITEMID, COUNT(o.ITEMID) AS COUNT, MAX(i.QUANTITY) AS Quantity
FROM       ORDERS AS o LEFT OUTER JOIN
           INVENTORY AS i ON o.ITEMID = i.ITEMID
           GROUP BY o.ITEMID

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


спасибо за вашу помощь.

Это код, который у меня есть до сих пор

Dim castleavailability = _
            From o In orders _
            From i In inventorys _
            Where (x >= o.ITEMID = i.ITEMID)
            Group New With {o, i} By o.ITEMID Into oi()
            Select New With {.ItemId = oi.Key, .Count = oi.Select(y >= y.o.ItemId).Count(), .Quantity = oi.Select(y >= y.i.Quantity).Max()}

Ошибка, которую я получаю сейчас: «Определение метода« oi »не доступно в этом контексте». ссылаясь на строку «группа новых с». Любые идеи о том, как решить эту проблему

Большое спасибо

Ответы [ 2 ]

4 голосов
/ 07 марта 2012

Это должно работать для вас

var query = from o in context.Orders
            from i in context.Inventory
                             .Where(x = > o.ItemId = x.ItemId)
                             .DefaultIfEmpty()
            group new { o, i } by o.ItemId into oi
            select new
            {
              ItemId = oi.Key,
              Count = oi.Select(y => y.o.ItemId).Count(),
              Quantity = oi.Select(y => y.i.Quantity).Max(),
            };
0 голосов
/ 15 марта 2012

Вы также можете использовать программное обеспечение Linqer для преобразования SQL-запроса в запрос Linq Lambda.

Вы можете получить это программное обеспечение по следующей ссылке:

http://www.sqltolinq.com/

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