Синтаксис запроса LINQ к синтаксису метода - PullRequest
4 голосов
/ 10 марта 2011

Я использую 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;

Я хотел бы написать его эквивалент в Синтаксис метода LINQ для получения CmsContents.

В моей концептуальной модели два типа сущностей:

  • CmsContent
  • CmsContentsAssignedTo

и их наборы сущностей:

  • CmsContents
  • CmsContentsAssignedToes

и навигационные свойства:

  • в CmsContent -> CmsContentsAssignedTo RETURN: -> Экземпляр CmsContentsAssignedTo
  • в CmsContentsAssignedTo -> CmsContent ВОЗВРАТ: -> Экземпляр CmsContent

Ты знаешь, как это сделать? Я пытался больше одного дня, но я не могу решить это!

Спасибо за ваше время!

1 Ответ

10 голосов
/ 10 марта 2011

Эквивалентный синтаксис метода:

 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);

См. Мой блог Edulinq по выражениям запросов для получения дополнительной информации о том, как это работает, и в частности, откуда взялась буква "z" (на самом деле он не называется "z", у него нет имени, так как это прозрачный идентификатор ).

...