LINQ查询语法到方法语法

Gib*_*boK 4 linq linq-to-entities entity entity-framework

我使用asp.net,c#和EF4.

我对这个LINQ查询感到困惑:

  var queryContents = from a in context.CmsContentsAssignedToes
                    where a.UserId == myUserGuid
                    join cnt in context.CmsContents
                    on a.ContentId equals cnt.ContentId
                    where cnt.TypeContent == myTypeContent & cnt.ModeContent == myModeContent
                    select cnt;
Run Code Online (Sandbox Code Playgroud)

我想在LINQ方法语法中编写它的等价物来检索CmsContents.

在我的概念模型中有两种实体类型:

  • CmsContent
  • CmsContentsAssignedTo

和他们的实体集:

  • CmsContents
  • CmsContentsAssignedToes

和导航属性:

  • 在CmsContent中 - > CmsContentsAssignedTo RETURN: - > CmsContentsAssignedTo的实例
  • 在CmsContentsAssignedTo - > CmsContent RETURN: - > CmsContent的实例

你知道怎么做吗?有一天我尝试了更多,但我无法解决它!

谢谢你的时间!

Jon*_*eet 10

等效方法语法是:

 var queryContents = context.CmsContentsAssignedToes
                            .Where(a => a.UserId == myUserGuid)
                            .Join(context.CmsContents,
                                  a => a.ContentId,
                                  cnt => cnt.ContentId,
                                  (a, cnt) = new { a, cnt })
                            .Where(z => z.cnt.TypeContent == myTypeContent &
                                        z.cnt.ModeContent == myModeContent)
                            .Select(z => z.cnt);
Run Code Online (Sandbox Code Playgroud)

请参阅我关于查询表达式的Edulinq博客文章,了解其工作原理的详细信息,特别是"z"的来源(它不是真正称为"z";它没有名称,因为它是一个透明的标识符).