J'essaie d'implémenter un équivalent T-SQL d'un code where in (select ...)
dans LINQ.LINQ: Group By + Où dans la clause
C'est ce que j'ai maintenant:
int contactID = GetContactID();
IEnumerable<string> threadList = (from s in pdc.Messages
where s.ContactID == contactID
group 1 by new { s.ThreadID } into d
select new { ThreadID = d.Key.ThreadID}).ToList<string>();
var result = from s in pdc.Messages
where threadList.Contains(s.ThreadID)
group new { s } by new { s.ThreadID } into d
let maxMsgID = d.Where(x => x.s.ContactID != contactID).Max(x => x.s.MessageID)
select new {
LastMessage = d.Where(x => x.s.MessageID == maxMsgID).SingleOrDefault().s
};
Cependant, mon code ne compilera pas en raison de cette erreur pour le ToList()
:
ne peut pas convertir '
System.Linq.IQueryable<AnonymousType#1>
' à 'System.Collections.Generic.IEnumerable<string>
'
A nyone a des suggestions sur la façon de mettre en œuvre cela? Ou des suggestions sur la façon de simplifier ce code?
Vous n'avez pas besoin de créer des types anonymes dans les clauses de 'group'. – SLaks