私はlinqクエリで苦労しています。多対多Linqクエリ
私は、次のモデルがあります:
public class Message
{
public Message()
{
Date = DateTime.Now;
MessageRecipients = new List<MessageRecipient>();
}
[Key]
public int MessageID { get; set; }
public string Body { get; set; }
public DateTime Date { get; set; }
public List<MessageRecipient> MessageRecipients { get; set; }
}
public class MessageRecipient
{
public MessageRecipient()
{
HasBeenRead = false;
}
[Key]
public int MessageRecipientID { get; set; }
public Message Message { get; set; }
public string User { get; set; }
public bool HasBeenRead { get; set; }
}
メッセージは複数のメッセージの受信者に外に出ます。私は、特定のユーザーの未読メッセージを取得するクエリを作成しようとしています。
私は、ユーザーのメッセージを得ることができますが、私は未読のものを得るために、クエリを拡張するように見えることはできません。
public List<Message> GetMessageForUser(ApplicationUser user)
{
var messages = dbContext.Messages
.Where(x => x.MessageRecipients.Select(y => y.User).Contains(user.UserName))
.OrderByDescending(p => p.Date);
}
私は理由ApplicationUserとMessageRecipients間の外部キーのリンクを使用していませんよユーザーのオブジェクトは他のオブジェクトに依存しないため、ナビゲーションプロパティを使用するのではなく、ユーザー名だけでクエリを実行します。
、ありがとうございました! –