2016-03-02 42 views
0

我试图让每个用户的所有邮件的数量如何我可以通过我的全部邮件组

msg 1 = SenderId =1 , ReciverId =2 
msg 2 = SenderId =2 , ReciverId =1 
msg 3 = SenderId =1 , ReciverId =2 

我在我的例子 考虑1个使用相同的用户作为一个消息聊天等等查询需要reurn,我有一个消息

这是什么查询? 我写了一个查询底部,告诉我想要什么 但是回肠,我怎么写一个工作?

public class UserMessages 
{ 
    public long Id { get; set; } 
    public long SenderId { get; set; } 
    public long ReciverId { get; set; } 
    public string Text { get; set; } 
    public DateTime? DateTime { get; set; } 
    public bool FastMessage { get; set; } 
    public bool SenderDelete { get; set; } 
    public bool ReciverDelete { get; set; } 
    public bool ReciverRead { get; set; } 
} 

     var UserMessages = db.UserMessages 
          .Where(x => (x.SenderId == id && x.SenderDelete == false) || 
             (x.ReciverId == x.Id && x.ReciverDelete == false)) 
          .GroupBy(x => new { x.ReciverId, x.SenderId }) 
          .GroupBy((y, w) => y.Key.SenderId == w.Key.ReciverId 
               && y.Key.ReciverId == w.Key.SenderId) 
          .Count(); 
+0

究竟你到底想要得到什么? –

回答

0

我采取的是这样的:

var result = db.UserMessages 
       .Where(x => x.SenderId == id || x.ReceiverId == id) 
       .Select(x => x.ReceiverId == id ? x.SenderId : x.ReceiverId) 
       .Distinct() 
       .Count(); 
0
var id = 1; // the ID of the person to count chat partners for 

var chatPartnerCount = db.UserMessages 
    .Where(x => x.SenderId == id && !x.SenderDelete || x.ReceiverId == id && !x.ReceiverDelete) 
    .GroupBy(x => x.SenderId == id ? x.ReceiverId : x.SenderId) // group by the chat partner 
    .Count(); // count the number of unique chat partners