Linq和EF on .Any()

Gib*_*boK 3 c# linq linq-to-entities entity-framework

我使用c#,linq和EF4.

我在我的概念模型中表示的DataBase中有两个表:

数据库表:

CmsContents
CmsCategories
CmsRelatedCategories (Pure Juction Table)
Run Code Online (Sandbox Code Playgroud)

实体类型:

CmsContent
CmsCategory
Run Code Online (Sandbox Code Playgroud)

Entyt套装:

CmsContents
CmsCategories
Run Code Online (Sandbox Code Playgroud)

我有一些导航属性:

for CmsContents --> CmsCategories --> Return Collection of Cms CmsCategory
for CmsCategories --> CmsContents --> Return Collection of Cms CmsContents
Run Code Online (Sandbox Code Playgroud)

数据库中的连接表数据如下:

CategoryId     ContentId
7              1
7              2
9              2
Run Code Online (Sandbox Code Playgroud)

我需要查询Entity Framwork来检索包含在Junction Table中的所有CmsContents.

目前我使用此代码:

var contents = from cnt in context.CmsContents
                               where cnt.CmsCategories.Any()
                               select cnt;
Run Code Online (Sandbox Code Playgroud)

返回:

CmsContents
1
2
Run Code Online (Sandbox Code Playgroud)

我需要显示结果:

CmsContents
1
2
2
Run Code Online (Sandbox Code Playgroud)

我怀疑Any()只显示DISTINCT值,但我需要列出所有值.

知道怎么解决吗?

你能不能给我写LINQ查询,这样我就能得到清晰的图片.

Jon*_*eet 7

Any()根本不返回值 - 它返回一个布尔值,表示集合中是否有任何值.它只显示两个值,因为您只查询CmsContents,它有两行,并且两行至少有一个类别,因此两行都在结果中.

看起来你真的喜欢这样的事情:

var contents = from cnt in context.CmsContents
               from category in cnt.CmsCategories
               select cnt;
Run Code Online (Sandbox Code Playgroud)