我試圖在LINQ中實現where in (select ...)
代碼的T-SQL等效項。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>
'
A對於如何實現這個,有什麼建議嗎?或者有關如何簡化此代碼的任何建議?
你並不需要在`group`條款創建匿名類型。 – SLaks 2010-11-23 02:08:52