C# 连接表中的LINQ查询
我有一张这样的桌子:-C# 连接表中的LINQ查询,c#,linq,C#,Linq,我有一张这样的桌子:- CategoryId | QuestionId ----------------------- 1 | 2 1 | 3 3 | 2 4 | 3 我需要找出所有没有被某一特定类别使用的问题。例如,CategoryID=1 结果应该是没有问题显示 有人知道最好的方法吗?到目前为止,我还没有取得任何进展 编辑** public partial class FAQ {
CategoryId | QuestionId
-----------------------
1 | 2
1 | 3
3 | 2
4 | 3
我需要找出所有没有被某一特定类别使用的问题。例如,CategoryID=1 结果应该是没有问题显示 有人知道最好的方法吗?到目前为止,我还没有取得任何进展 编辑**
public partial class FAQ
{
public FAQ()
{
this.FAQCategoriesFAQs = new HashSet<FAQCategoriesFAQ>();
}
public int Id { get; set; }
public string Question { get; set; }
public string Answer { get; set; }
public bool IsVisible { get; set; }
public Nullable<System.DateTime> DateLastUpdated { get; set; }
public System.DateTime DateCreated { get; set; }
public bool IsDeleted { get; set; }
public virtual ICollection<FAQCategoriesFAQ> FAQCategoriesFAQs { get; set; }
}
public partial class FAQCategory
{
public FAQCategory()
{
this.FAQCategoriesFAQs = new HashSet<FAQCategoriesFAQ>();
}
public int Id { get; set; }
public string Name { get; set; }
public int DomainId { get; set; }
public Nullable<System.DateTime> DateLastUpdated { get; set; }
public System.DateTime DateCreated { get; set; }
public bool IsDeleted { get; set; }
public int SortOrder { get; set; }
public virtual Domain Domain { get; set; }
public virtual ICollection<FAQCategoriesFAQ> FAQCategoriesFAQs { get; set; }
}
public partial class FAQCategoriesFAQ
{
public int FAQCategoryId { get; set; }
public int FAQId { get; set; }
public int SortOrder { get; set; }
public virtual FAQCategory FAQCategory { get; set; }
public virtual FAQ FAQ { get; set; }
}
公共部分类常见问题解答
{
公众常见问题
{
this.FAQCategoriesFAQs=new HashSet();
}
公共int Id{get;set;}
公共字符串问题{get;set;}
公共字符串答案{get;set;}
公共布尔值可见{get;set;}
公共可为空的DateLastUpdated{get;set;}
public System.DateTime DateCreated{get;set;}
公共布尔被删除{get;set;}
公共虚拟ICollection FAQ分类FAQ{get;set;}
}
公共部分类
{
公众常见问题解答(分类)
{
this.FAQCategoriesFAQs=new HashSet();
}
公共int Id{get;set;}
公共字符串名称{get;set;}
公共int域ID{get;set;}
公共可为空的DateLastUpdated{get;set;}
public System.DateTime DateCreated{get;set;}
公共布尔被删除{get;set;}
公共int排序器{get;set;}
公共虚拟域{get;set;}
公共虚拟ICollection FAQ分类FAQ{get;set;}
}
公共部分类FAQ分类FAQ
{
public int FAQCategoryId{get;set;}
public int FAQId{get;set;}
公共int排序器{get;set;}
公共虚拟FAQ类别FAQ类别{get;set;}
公共虚拟常见问题解答FAQ{get;set;}
}
如果您在问题
实体中有类别的导航属性:
db.Questions.Where(q => !q.Categories.Any(c => c.Id == id))
更新连接表,使其与原始问题略有不同:)
您有具有导航属性的实体吗?有,x.FAQ分类FAQ。。但是我需要忽略那些被其他类别重复的问题?“我需要拉出所有没有被特定类别使用的问题。例如,CategoryID=1”应该是“问题ID=1”吗?所以你想要的问题不会出现在连接表的任何地方?否则我会对你的要求感到困惑。如果问题不在该表中,那么我假设您可以获得确实存在的问题ID的列表?恐怕我必须直接访问连接表。这并不理想,但我们必须改变。因此,我无法访问类别导航属性。我必须访问连接表,这使它变得很困难。@Derek您能否提供您的实体代码(显示ID和导航属性)。还有,为什么你不得不使用连接表?除了键之外还有其他字段吗?是的,连接表中添加了一个排序顺序列,这破坏了导航属性。@Derek已更新,您可以从连接实体中使用
FAQCategoryId
。谢谢您的帮助!
db.FAQs.Where(q => !q.FAQCategoriesFAQs.Any(qc => qc.FAQCategoryId == id))