我如何 运行 分组和计算

How I run On Group And Calc

public class UserMessages
    {
        [Key]
        public long Id { get; set; }

        [ForeignKey("fk")]
        public long fk{ get; set; }
        public virtual fk fk{ get; set; }

        public long ChatMateId { get; set; }

        public string text { get; set; }

        public DateTime? dateTime { get; set; }

        public bool read { get; set; }

    }

我需要这方面的帮助

numberOfNewMessage = c.s.userMessages.GroupBy(x=>x.ChatMateId).

我通过 ChatMateId 获得了群组

我想return numberOfNewMessage 属性 条新消息

我需要运行每组如果里面有一条消息有bool read= false然后我添加到numberOfNewMessage1

我该怎么做?

示例:

如果我有 3 个组,每个组有 10 条消息,并且所有消息都是 bool read 是假的,我需要将 numberOfNewMessage 设置为值 3。

如果我没理解错的话。您想要每个键下的消息数。那将是:

var numberOfNewMessage = c.s.userMessages
    .GroupBy(x=>x.ChatMateId)
    .Select(x=> new{Key = x.Key, Unread = x.Count(m => !m.Read)});

因此您需要至少有一条未读消息的组数:

int numberOfNewMessage = msgs.GroupBy(m => m.ChatMateId)
                             .Count(m => m.Any(x => !x.read));

我试着统计未读消息数。

numberOfNewMessage = c.s.userMessages.GroupBy(x=>x.ChatMateId)
                                     .Count(msg=> !msg.Read);