我使用c#,linq和EF4。
我的概念模型中的数据库中有两个表:
数据库表:
CmsContents
CmsCategories
CmsRelatedCategories (Pure Juction Table)
实体类型:
CmsContent
CmsCategory
Entyt Set:
CmsContents
CmsCategories
我有一些导航属性:
for CmsContents --> CmsCategories --> Return Collection of Cms CmsCategory
for CmsCategories --> CmsContents --> Return Collection of Cms CmsContents
我需要查询实体框架,以检索Junction表中未关联的所选内容的类别列表。
目前我使用此代码(注意两个FROM):
var categories = from category in context.CmsCategories
from content in category.CmsContents
select category;
返回整个数据库中未关联的所有类别的列表,而不是特定内容。
我需要显示与 SPECIFIC Content
相关联的类别列表你能不能给我写LINQ查询,这样我就可以清楚地了解情况。 谢谢你的帮助。
答案 0 :(得分:0)
你可以尝试:
CmsCategories.Except(myContent.CmsCategories)
myContent是CmsContent的一个实例,假设您之前检索过它并且启用了延迟加载。
编辑:可能的代码示例:
var myContent = context.CmsContents.FirstOrDefault(c => c.Id == 1);
var contentCategories = myContent.CmsCategories;
var otherCategories = context.CmsCategories.Except(contentCategories);
foreach (var item in otherCategories)
{
//whatever you need to do
}
答案 1 :(得分:0)
我想您要从CmsCategories
中进行选择,并在关联表中排除 中的任何内容。
var query =
context
.CmsCategories
.Except(context.CmsRelatedCategories.Select(x=>x.CmsCategory));