如何使用Linq返回每个用户的numberOfMessages

时间:2011-09-05 18:56:32

标签: c# linq entity-framework

我有两张桌子:
用户:Id,UserName,...
消息:Id,MsgText,IsRead,....

我想从这些表中选择,以获得每个用户的消息数量 例如,我希望以这种格式得到结果:
UserID 1 NumberOfMessages 10
UserID 2 NumberOfMessages 4
UserID 3 NumberOfMessages 0
....

如何在一个linq语句中写这个。

注意:我正在使用codefirst实体框架,并使用linq方法格式。

public partial class User
    {
        public long Id { get; set; }
        public string FullName { get; set; }
        public string UserName { get; set; }

         public virtual ICollection<Message> Messages { get; set; }
     }

     public partial class Message
    {
        public long Id { get; set; }
        public long SenderId { get; set; }
        public long ReceiverId { get; set; }
        public string MessageText { get; set; }
        public System.DateTime CreatedOn { get; set; }

        public virtual User Sender { get; set; }
        public virtual User Receiver { get; set; }
    }

1 个答案:

答案 0 :(得分:3)

var result = dbContext.Users
    .Select(u => new 
                   {
                       UserID = u.Id, 
                       NumberOfMessages = u.Messages.Count()
                   })
    .ToList();