c# - 如何在 LINQ 中获取类的属性

标签 c# database linq lambda

我正在尝试使用 linq 查找未读邮件计数。我正在计算消息的最后修改日期是否大于用户的 LastViewedOn 日期。我的 ConversationMembers 类具有 LastViewedOn 属性。但是我找不到访问用户的 LastViewedOn 属性的方法..

.Count(x => x.ConversationMembers
            .Where(y => y.MembershipId.Value == membershipId)
            .Any(y => y.LastViewedOn == null)
            ||
            x.ConversationMessages.OrderByDescending(message => message.LastModifiedOn)
        .Any(z => z.LastModifiedOn > x.ConversationMembers
        .Where(y => y.MembershipId.Value == membershipId) 
        .Select()
        .LastViewedOn.Value
    )); //here i m trying to reach LastViewedOn value but it not work

你能帮我看看我怎样才能达到那个值吗?

这是我的 ConversationMember 类

public class ConversationMember
{
    public Guid Id { get; set; }
    public Guid ConversationId { get; set; }
    public virtual Conversation Conversation { get; set; }
    public Guid? MembershipId { get; set; }
    public DateTime? LastViewedOn { get; set; }
}

这里是ConversationMessage类

 public class ConversationMessage
    {
        public Guid Id { get; set; }
        [Required]
        public string Text { get; set; }
        public Guid ConversationId { get; set; }
        public virtual Conversation Conversation { get; set; }
        public Guid? MembershipId { get; set; }

        [Required]
        [Column(TypeName = "datetime2")]
        public DateTime LastModifiedOn { get; set; }
    }

这里是 session 类

public class Conversation
{
    public Guid Id { get; set; }

    public virtual ICollection<ConversationMember> ConversationMembers { get; set; }
    public virtual ICollection<ConversationMessage> ConversationMessages { get; set; }


    [Required]
    public DateTime LastModifiedOn { get; set; }
}

最佳答案

尝试将您的 LINQ 更改为:

.Count(x => x.ConversationMembers.Where(y => y.MembershipId.Value == membershipId)
    .Any(y => y.LastViewedOn == null) || x.ConversationMessages.OrderByDescending(message => message.LastModifiedOn)
    .Any(z => z.LastModifiedOn > x.ConversationMembers.FirstOrDefault(y => y.MembershipId.Value == membershipId).LastViewedOn.Value));

关于c# - 如何在 LINQ 中获取类的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49258887/

相关文章:

c# - 将 LINQ 用于 CSV 数据

c# - 使用 linq 自引用连接

c# - Microsoft.AspNetCore.Http.HttpRequest 中的 HttpRequestBase.Files 集合的类似物是什么

javascript - javascript 中的警报(状态)总是导致 null

database - 可扩展、快速、文本文件支持的数据库引擎?

python - 如何从数据库的属性派生特定元素并将它们连接到主键?

c# - 在来自同一 MySQL 服务器的不同数据库的两个表中执行连接查询

C# 库尔德语言本地化

c# - 确定当前用户帐户的密码何时即将过期

c# - 在 LINQ 中重用连接