0 / 0 / 1
Регистрация: 16.02.2015
Сообщений: 6
1

Вместо цикла сделать запрос

16.02.2015, 18:33. Показов 1271. Ответов 2
Метки нет (Все метки)

Я делаю запрос на выборку новостей:

C#
1
2
3
4
5
6
            var post = (
                from p in db.Posts
                where p.User.Id == urlId
                select p)
                .Include(m => m.User)
                .ToList();
К посту есь лайк и дислайк и так же отслежуем нажал ли пользователь лайк или дислайк.
Я это делаю так, нашол все посты потом через foreach каждый проверяю есть ли лайк или дислайк или нету нечево и записую результат в список int потом в view через if выбираю какого цвета делать иконки. Но так не нужно делать это плохо. Кто то может помочь в решении этой проблемы?
Я думал так сделать. Модель с двома свойствами List<Posts> post, и List<int> likeOrDislike. И сделать выборку в одном запросе что именно мне нужно но не хватает знании это сделать.

Таблица UserPostLike имеет примерно такую структуру:
Id|PostId|LikeOrdislike|User

Как сделано сейчас:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
            List<int> listLike = new List<int>();
 
            foreach (var item in post)
            {
                UserPostLike like = db.UserPostLikes.FirstOrDefault(m => m.ContentId == item.Id && m.User.Id == userId);
                if (like != null)
                {
                    if (like.LikeOrDislike)
                        listLike.Add(1);
                    else
                        listLike.Add(2);
                }
                else
                    listLike.Add(0);
            }
            ViewBag.like = listLike;
Я пробывал это так сделать(но что то не так пошло):

C#
1
2
3
4
5
6
7
8
            var test = (
                from post in db.Posts
                from like in db.UserPostLikes
                where post.User.Id == urlId
                select new { post.User, post, test1 = (like.User.Id == post.User.Id) ? ((like.User.Id == post.User.Id && like.LikeOrDislike) ? 1 : 2) : 0 })
                .Distinct()
                .Include(p => p.User)
                .ToList();
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.02.2015, 18:33
Ответы с готовыми решениями:

Как сделать так, чтобы в DGV отображалось вместо request - запрос, а вместо response - ответ
Добрый день, ув. читатели форума. Проблема такова: В одном столбце я вывожу данные: request или...

вместо цикла рекурсию сделать
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &quot;locale.h&quot; #include &quot;conio.h&quot; #include...

Выполните, пожалуйста, задание, при этом вместо оператора цикла while используйте оператора цикла do_while
Используя оператор цикла while, напишите программу для вычисления ниже следующей суммы. ...

Сделать программу с использованием цикла While, без цикла For
Дана такая программа: CLS INPUT &quot; Кол. рабочих дней: &quot;, n INPUT &quot; Начальное кол. товара: &quot;, R ...

2
0 / 0 / 1
Регистрация: 17.02.2015
Сообщений: 1
17.02.2015, 21:14 2
Я думаю что тебе поможет для начала простой вложенный запрос:
SQL
1
2
3
4
5
6
7
SELECT [Id], 
         [LIKE], 
         [Text], 
         DateOfCreation, 
         (SELECT [LikeOrDislike] FROM [UserPostLikes] WHERE User_Id='31bcd7e3-273a-4a57-ba8a-5b55c63c8818' AND ContentId=[Posts].Id) AS LikeorDislike 
 
FROM [Posts]
0
0 / 0 / 1
Регистрация: 16.02.2015
Сообщений: 6
23.02.2015, 13:01  [ТС] 3
Спасибо помогло.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.02.2015, 13:01
Помогаю со студенческими работами здесь

Как сделать запрос AJAX, подождать результат и сделать новый запрос?
У меня есть массив элементов, и forEach который вызывает AJAX запрос для каждого элемента Как...

Timer() вместо бесконечного цикла
Здравствуйте. Столкнулся с такой проблемой. Есть функция которая смотрит добавилась ли новая...

Использование рекурсии вместо цикла
Помогите, пожалуйста! Нужно вместо циклов использовать рекурсию, как это сделать? #include...

Прохождение цикла 2 раза, вместо 1
$check = $_POST; for($i = 0; $i &lt;= count($check); $i++) { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru