Как я могу сделать это Aggregate, group by, в запросе в LINQ? - PullRequest
3 голосов
/ 14 мая 2010

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

Это запрос, который мне нужен, и я не могу создать его в LINQ.

SELECT * FROM
dbo.Schedules s, dbo.Videos v
WHERE s.VideoID = v.ID
AND s.ID IN 
(
    SELECT MAX(ID) FROM dbo.Schedules
    WHERE ChannelID = 1
    GROUP BY VideoID
)
ORDER BY v.Rating DESC, s.StartTime DESC

У меня есть запрос "IN" в LINQ. Я думаю, что-то вроде этого

var uniqueList =  from schedule in db.Schedules
                  where schedule.ChannelID == channelID
                  group schedule by schedule.VideoID into s
                  select new
                  {
                      id = s.Max(i => i.ID)
                  };

Возможно, это неправильно, но теперь я не могу проверить другой запрос на это в предложении where uniqueList.Contains(schedule.ID)

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

Я получаю эту ошибку, и она не имеет особого смысла.

Аргументы типа для метода 'System.Linq.Queryable.Contains (System.Linq.IQueryable, TSource)' не могут быть выведены из использования. Попробуйте указать аргументы типа явно.

1 Ответ

2 голосов
/ 14 мая 2010

попробуйте с .Where (sInner => s.ID == sInner.ID) .Any ().

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

...