LINQ 在哪里存在 GROUP BY
Posted
技术标签:
【中文标题】LINQ 在哪里存在 GROUP BY【英文标题】:LINQ Where Exists GROUP BY 【发布时间】:2011-04-03 16:24:22 【问题描述】:如何在 LINQ 中进行转换?
SELECT B.SENDER, B.SENDNUMBER, B.SMSTIME, B.SMSTEXT
FROM MESSAGES B
WHERE EXISTS ( SELECT A.SENDER
FROM MESSAGES A
WHERE A.SENDER = B.SENDER
GROUP BY A.SENDER
HAVING B.SMSTIME = MAX( A.SMSTIME))
GROUP BY B.SENDER, B.SENDNUMBER, B.SMSTIME, B.SMSTEXT ;
非常感谢:)
编辑!!
解决方法:
var Condition = "order by SMSTime desc";
IEnumerable<ClassMessaggio> messaggi = Database.Select<ClassMessaggio>(Condition);; // Load all but sorted
ElencoConversazioni = messaggi.GroupBy(m => new m.Number )
.Select(g => g.OrderByDescending(m => m.SMSTime).First()).ToObservableCollection();
【问题讨论】:
外部GROUP BY
是干什么用的?你想做什么?
我有一些联系人的消息列表,我需要显示每个联系人的最后一条消息的“对话”列表。
【参考方案1】:
试试
db.Messages.Where(b => b.SmsTime == Messages.Where(a => a.Sender == b.Sender)
.Max(a => a.SmsTime))
或者
db.Messsages.GroupBy(m => new m.Sender, m.SendNumber )
.Select(g => g.OrderByDescending(m => m.SmsTime).First())
db
是您的 DataContext。
【讨论】:
我的表是“ClassMessaggio”,所以我用 ClassMessaggio 替换 Messages,但它给了我:“JackSMS.ClassMessaggio 在位置 15 的类中没有字段或方法 'ClassMessaggio'” 嗯?您需要在实例上运行它(它不是static
方法)。使用 DataContext。
我有这个: var condition = "ClassMessaggio.GroupBy(m => new m.Sender, m.SendNumber, m.OtherThings).Select(g => g.OrderByDescending(m = > m.SmsTime).First())"; ElencoConversazioni = Database.Select要显示对话列表以及“每个联系人的最后一条消息”,您可以尝试以下操作:
// a query to find the last Sms time per sender
var lastSmsQuery = from m in db.messages
group m by m.Sender into grouping
select new
Sender = grouping.Key,
LastSmsTime = grouping.Max(x => x.SmsTime)
;
// a query to find the messages linked to the last Sms per sender
var lastMessageQuery = from m in db.messages
join l in lastSmsQuery on new m.Sender, m.SmsTime equals new l.Sender, l.LastSmsTime
select m;
使用的 2-query 方法类似于今天早些时候的这个问题 - Convert SQL Sub Query to In to Linq Lambda
【讨论】:
正如我对另一个答案的理解,我认为问题是我不需要将 LINQ 与 Perst DB 完全结合使用。我会尝试从数据库中找到我必须用于查询的内容,我会再次提问。感谢您的帮助;) 从未使用过 Perst - 但 Bing 告诉我它可以支持一些 Linq 查询 - 祝你好运!以上是关于LINQ 在哪里存在 GROUP BY的主要内容,如果未能解决你的问题,请参考以下文章
C# Linq group by 和 group by into 运用实例