我正在尝试使用 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/