EF-запрос с объединением не выполняется - PullRequest
0 голосов
/ 10 июля 2019

Привет У меня есть запрос в рамках сущности, но он не работает.У вас есть идеи?

Мне нужен этот результат

SELECT id, min(price) minPrice
    FROM (
        SELECT id, max(servicePrice) msi FROM offers
            GROUP BY id
        ) as mvo INNER JOIN offers so ON mvo.id=so.id AND mvo.msi=so.servicePrice
    WHERE so.id=o.id
    GROUP BY so.id

Я попробовал следующий код, но есть две ошибки.Присоединение возвращает The type of one of the expressions in the join clause is incorrect. Type inference failed in the call to 'Join'..И последний выбор работает правильно, когда нет minPrice = ms.Min(s => s.price).Когда у меня есть функция min, время выполнения возвращает System.ArgumentException: 'Value does not fall within the expected range.'

var q = 
    from vo in dataContext.Offers join so in (
        from o in dataContext.Offers
            group o by o.id into oo
            select new { id = oo.Key, MaxSI = oo.Max(v => (v.servicePrice)) }
    ) on new { vo.id, vo.servicePrice } equals new { so.id, so.MaxSI }
        group vo by vo.id into ms
        select new { id = ms.Key, minPrice = ms.Min(s => s.price) }
    ;

1 Ответ

0 голосов
/ 10 июля 2019

Я думаю, что соединение должно быть таким -

var q = 
    from vo in dataContext.Offers join so in (
        from o in dataContext.Offers
            group o by o.id into oo
            select new { id = oo.Key, MaxSI = oo.Max(v => (v.servicePrice)) }
    ) 
    on new { id = vo.id, price = vo.servicePrice } equals new { id = so.id, price = so.MaxSI }
    group vo by vo.id into ms
    select new { id = ms.Key, minPrice = ms.Min(s => s.price) }
 ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...