2011-04-03 32 views
0

如何在LINQ中将其转换?LINQ在哪里存在GROUP BY

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(); 
+0

什么是“GROUP BY”外层?你想做什么? – SLaks 2011-04-03 16:31:04

+0

我有一些联系人的消息列表,我需要显示每个联系人的最后一条消息的“对话”列表。 – Leen15 2011-04-03 16:34:35

回答

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。

+0

对不起,不工作:( – Leen15 2011-04-03 16:33:31

+0

为什么不呢?会发生什么? – SLaks 2011-04-03 16:34:38

+0

我的桌子是“ClassMessaggio”,所以我用ClassMessaggio替换Messages,但它给了我:“没有场或方法'ClassMessaggio'在JackSMS.ClassMessaggio类中的位置15 “ – Leen15 2011-04-03 16:40:02

0

以示与“每一个接触的最后一条消息”沿会话列表,你可以尝试这样的:

// 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-查询方法类似于从今天早些时候这个问题 - Convert SQL Sub Query to In to Linq Lambda

+0

正如我所理解的其他答案,我认为问题是我不需要完全使用LINQ与Perst DB。我会尝试找到我必须用来从数据库查询,我会再次质疑。感谢您的帮助;) – Leen15 2011-04-03 17:11:22

+0

没用过了Perst - 但兵告诉我,它可以支持一些的LINQ查询 - 祝你好运! – Stuart 2011-04-03 17:39:03