2011-04-03 36 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