Arhn - архитектура программирования

Запрос подсчета LINQ возвращает 1 вместо 0

У меня есть следующая точка зрения: -

CREATE VIEW tbl_adjudicator_result_view
AS
SELECT a.adjudicator_id, sar.section_adjudicator_role_id, s.section_id, sdr.section_dance_role_id, d.dance_id, c.contact_id,
 ro.round_id, r.result_id, c.title, c.first_name, c.last_name, d.name, r.value, ro.type
FROM tbl_adjudicator a
INNER JOIN tbl_section_adjudicator_role sar on sar.section_adjudicator_role2adjudicator = a.adjudicator_id
INNER JOIN tbl_section s on sar.section_adjudicator_role2section = s.section_id
INNER JOIN tbl_section_dance_role sdr on sdr.section_dance_role2section = s.section_id
INNER JOIN tbl_dance d on sdr.section_dance_role2dance = d.dance_id
INNER JOIN tbl_contact c on a.adjudicator2contact = c.contact_id
INNER JOIN tbl_round ro on ro.round2section = s.section_id
LEFT OUTER JOIN tbl_result r on r.result2adjudicator = a.adjudicator_id AND r.result2dance = d.dance_id 

Когда я запускаю следующий запрос непосредственно к БД, я получаю 0 в столбце подсчета, где нет результата

select adjudicator_id, first_name, COUNT(result_id)
from tbl_adjudicator_result_view arv
where arv.round_id = 16
group by adjudicator_id, first_name

Однако, когда я использую запрос LINQ, я всегда получаю 1 в столбце подсчета.

var query = from arv in db.AdjudicatorResultViews
                    where arv.round_id == id
                    group arv by new { arv.adjudicator_id, arv.first_name} into grp 
                    select new AdjudicatorResultViewGroupedByDance
                    {
                        AdjudicatorId = grp.Key.adjudicator_id,
                        FirstName = grp.Key.first_name,
                        Count = grp.Select(p => p.result_id).Distinct().Count()
                    };

Что мне нужно изменить в запросе View/Linq.

07.05.2010

Ответы:


1

Вы не делаете то же самое в запросе LINQ, что и в SQL. COUNT(result_id) не считает различные значения result_id — он считает ненулевые значения.

Попробуйте это вместо этого:

Count = grp.Select(p => p.result_id).Where(x => x != null).Count()
07.05.2010

2

Дело в том, что вы группируете свои данные в запросе LINQ, и вы всегда получите хотя бы одну группу.

Count этой группы может быть 0, но количество групп будет равно 1.

07.05.2010
  • Как сделать так, чтобы он не вел себя так и возвращал фактический счет? 11.10.2018
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..