Linq和EF中的.Any()

3

我使用c#、linq和EF4。

我的数据库中有两个表,它们在我的概念模型中被表示:

数据库表:

CmsContents
CmsCategories
CmsRelatedCategories (Pure Juction Table)

实体类型:

CmsContent
CmsCategory

实体集:

CmsContents
CmsCategories

我有一些导航属性:

for CmsContents --> CmsCategories --> Return Collection of Cms CmsCategory
for CmsCategories --> CmsContents --> Return Collection of Cms CmsContents

以下是联接表中的数据库数据:

CategoryId     ContentId
7              1
7              2
9              2

我需要查询Entity Framework以检索包含在连接表中的所有CmsContents。

目前我使用以下代码:

var contents = from cnt in context.CmsContents
                               where cnt.CmsCategories.Any()
                               select cnt;

这个函数返回:

CmsContents
1
2

我需要显示结果,而不是解释:
CmsContents
1
2
2

我怀疑Any()只显示不同的值,但我需要列出所有的值。

有什么想法可以解决这个问题吗?

请问您能否为我编写LINQ查询,以便我能清楚地了解情况。


它不仅会显示唯一的值 - 它只会查询唯一的值。看起来你需要做一个连接操作(join)。 - Gabe
1个回答

7

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

看起来你真正想要的是:

var contents = from cnt in context.CmsContents
               from category in cnt.CmsCategories
               select cnt;

Jon,非常感谢你的回答。它运行得很好!再次感谢你的帮助 :-) - GibboK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接