Я пытаюсь реализовать T-SQL-эквивалент кода where in (select ...)
в LINQ.
Это то, что у меня есть сейчас:
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
};
Однако мой код выигралне компилируется из-за этой ошибки для ToList()
:
невозможно преобразовать из 'System.Linq.IQueryable<AnonymousType#1>
' в 'System.Collections.Generic.IEnumerable<string>
'
У кого-либо есть предложениякак это реализовать?Или какие-либо предложения о том, как упростить этот код?