簡體   English   中英

實體框架多對多關系:搜索是否包含所有關系

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM