[英]Entity Framework and (1 to many)-(many to 1) (1 - * * - 1) relations
[英]Entity Framework Many To Many Relations: Search if contains all
我在這個問題上已經有一段時間了,我不知道該怎么做。 我有這個模型:
public class ConversationDB
{
public int Id { get; set; }
public virtual List<UserDB> Participants { get; set; }
}
和這個
public class UserDB
{
public int Id { get; set; }
public String Username { get; set; }
public String FirstName { get; set; }
public String LastName { get; set; }
public String Email { get; set; }
public String Password { get; set; }
public virtual List<ConversationDB> Conversations { get; set; }
}
我目前正在苦苦掙扎的是搜索包含參與者列表中所有元素的對話:
ConversationDB conversation = db.Conversations.Where(c => c.Participants.OrderBy(p => p.Username).SequenceEqual(partList.OrderBy(p => p.Username))).FirstOrDefault();
這段代碼雖然給我一個錯誤。 我應該采取的正確程序是什么?
編輯:我帶來了這個丑陋和愚蠢的解決方案,但基本上是我想要的:
IEnumerable<ConversationDB> convs = db.Conversations.AsEnumerable();
foreach(UserDB u in partList)
{
convs = convs.Where(c => c.Participants.Contains(u));
}
為什么不 :)
ConversationDB conversation = db.Conversations.Where(c => c.Participants.Count() == db.Users.Count());
我認為,您不能兩次添加一個用戶。
或者,更正式的方式:
ConversationDB conversation = db.Conversations.Where(c => db.Users.All(u => c.Participants.Contains(u)));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.