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

本文关键字:用户 numberOfMessages 何使用 Linq 返回 | 更新日期: 2023-09-27 18:07:54

我有两个表:
用户:Id, UserName,…
消息:Id, MsgText, IsRead,....

我想从这些表中选择每个用户的消息数。
例如,我想有这样的格式的结果:
UserID 1 NumberOfMessages 10
UserID 2 NumberOfMessages 4
UserID 3 NumberOfMessages 0

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

注意:我使用代码优先实体框架,并使用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; }
    }

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

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