S'il vous plaît ne me donne pas un exemple de travail complet, je veux savoir comment cela se fait plutôt que d'obtenir un code que je peux copier collerComment puis-je faire cette agrégat, grouper par, dans une requête dans LINQ?
Ceci est la requête que j'ai besoin, et ne peut pas pour la vie de moi le créer en 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
J'ai la « IN » requête dans LINQ je pense, c'est quelque chose comme ça
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)
};
Il est peut-être mal, mais maintenant je ne peux pas vérifier dans une autre requête pour cela dans une clause where uniqueList.Contains(schedule.ID)
Il y a peut-être un meilleur moyen d'écrire cette requête, si vous avez une idée que j'aimerais quelques conseils. Je reçois cette erreur et cela n'a pas beaucoup de sens.
Les arguments de type pour la méthode 'System.Linq.Queryable.Contains (System.Linq.IQueryable, TSource)' ne peuvent pas être déduits de l'utilisation. Essayez de spécifier explicitement les arguments de type.
Cela semble avoir fait l'affaire, merci pour le conseil. –
Vous pouvez faire un peu plus simple: '.Any (sInner => s.ID == sInner.ID)' –