У меня есть структура базы данных, которая имеет множество пользователей и их UserIdРегистрация в LINQ в где положение
Я тогда есть таблица под названием «Post», который состоит из текстового поля и поля CreatedBy.
У меня тогда есть таблица «Follows», которая состоит из полей «WhoIsFollowing» и «WhoTheyFollow».
Идея состоит в том, что таблица «Follows» отображает пользователей, которым пользуется другой пользователь «Follows».
Если я использую приложение в качестве конкретного пользователя, и я хочу получить все мои соответствующие «сообщения», это будут сообщения тех пользователей, которых я придерживаюсь, или мои собственные сообщения.
Я пытаюсь получить это в одном заявлении LINQ, но не смог добиться его совершенства. В конечном счете мне нужно запросить таблицу «Сообщений» для всех «Постов», которые я опубликовал, и присоединился ко всем сообщениям людей, которых я придерживаюсь в таблице «Follows».
Я получил это работаю с этим утверждением
postsWeWant = (from s in db.Posts
join sa in db.Follows on s.CreatedBy equals sa.WhoTheyAreFollowing into joinTable1
from x in joinTable1.DefaultIfEmpty()
where (x.WhoIsFollowing == userId || s.CreatedBy == userId) && !s.Deleted
orderby s.DateCreated descending
select s).Take(25).ToList();
Вопрос заключается в том, что он, кажется, вернулся с дубликатами для всех сообщений, отправленных самого пользователем. Я добавил .Distinct(), чтобы обойти это, но вместо того, чтобы принимать по 25 сообщений каждый раз, дубликаты означают, что он возвращается с гораздо меньшим количеством, когда в нем много сообщений этого пользователя в последних 25.
Во-первых, почему вышеупомянутое возвращается с дубликатами? (Это поможет мне понять утверждение немного больше), а во-вторых, как мне обойти это?
Почему вы делаете левое внешнее соединение? –
@EhsanSajjad Я думаю, он пытается включить плакаты, которые не следуют никому – Yohannes