Linq, как использовать Где на результат Join - PullRequest
0 голосов
/ 16 июня 2011

Мне нужно вычислить некоторые операции соединения с моими данными, в результате этих операций мне нужно использовать оператор WHERE.

В данный момент я использую этот синтаксис ниже, без ошибок, но результат не такой, как ожидалось. Конечно, мне нужно сгруппировать результат для моего объединения и применить к нему запрос.

Не могли бы вы предоставить мне пример кода? К сожалению, я довольно новичок в Linq и не могу этого сделать.

var myImagesForUser = from i in context.CmsImagesContents
                      join c in context.CmsContents on i.ContentId equals c.ContentId
                      join a in context.CmsAuthors on c.AuthorId equals a.AuthorId
                      join u in context.aspnet_Users on a.UserId equals u.UserId
                      where u.UserId == (Guid)myLoggedInUser.ProviderUserKey
                      select i;

Ответы [ 3 ]

1 голос
/ 16 июня 2011

Вероятно, связанных данных для текущего вошедшего в систему пользователя нет ни в одной или нескольких таблицах (Авторы, Содержание, ImagesContents), и вы не получите никакого результата из-за внутреннего объединения этих таблиц. вместо этого вы можете попробовать внешнее соединение. Посмотрите на эту статью для левого внешнего соединения в запросах Linq

1 голос
/ 16 июня 2011

Хм. Я вижу две вещи, которые я бы сделал по-другому.

1.) В конце вы забыли вызвать .ToList () для выполнения запроса. В противном случае может случиться так, что вы неправильно используете оператор LINQ при обработке послесловий.

 var myImagesForUser = (YOUR LINQ STATEMENT).ToList();

2.) Странно, что вам нужно конвертировать UserKey в GUID. Если это действительно необходимо, я делаю это до оператора LINQ и проверяю локальную переменную.

var userId = (Guid)myLoggedInUser.ProviderUserKey;
var myImagesForUser = (YOUR LINQ STATEMENT ... where u.UserId == userId ).ToList();

Возможно, это поможет вам получить ожидаемый результат.

0 голосов
/ 16 июня 2011

где a.UserId == (Guid) myLoggedInUser.ProviderUserKey.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...