powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Запрос на LINQ к DataTable на C#
7 сообщений из 7, страница 1 из 1
Запрос на LINQ к DataTable на C#
    #40099758
mikka sikorsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую!
Уважаемые знатоки LINQ, помогите с запросом.
Есть DataTable на C#, в ней содержится информация по тестированию.
На один тест может приходиться до 30 вопросов и на каждый вопрос до 7 ответов.
Нужен запрос, отображающий сколько в данное время в таблице содержится ответов по каждому вопросу в каждом тесте. Думаю, что на выходе нужно получить что-то типа массива с элементами типа [{5, 4}, {7, 4} ], где первый элемент содержит Id вопроса 5, которому даны 4 ответа, второй элемент содержит Id ответа 7, которому даны 4 ответов. Id выбранного теста в данное время известно - 5.
Пример таблицы:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
TestId	QuestionId  AnswerId
   5	    5	       5
   5	    5	       6
   5	    5	       7
   5	    5	       8
   5	    7	       10
   5	    7	       11
   5	    7	       12
   5	    7	       13
...
Рейтинг: 0 / 0
Запрос на LINQ к DataTable на C#
    #40099768
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в чём проблема сделать группировку по тесту и вопросам и подсчитать кол-во ответов?
...
Рейтинг: 0 / 0
Запрос на LINQ к DataTable на C#
    #40099790
mikka sikorsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One, я не силён в LINQ, такого раньше не делал.
На MS SQL всё просто:
Код: sql
1.
2.
3.
4.
select QuestionId, count(AnswerId)
from table
where TestId = @TestId
group by QuestionId


А какой синтаксис на LINQ я не знаю.
Поэтому прошу помощи для примера на будущее. Спасибо
...
Рейтинг: 0 / 0
Запрос на LINQ к DataTable на C#
    #40099805
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Запрос на LINQ к DataTable на C#
    #40100340
mikka sikorsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал сделать простенький запрос. На основе https://docs.microsoft.com/ru-ru/dotnet/framework/data/adonet/creating-a-datatable-from-a-query-linq-to-dataset

IEnumerable<DataRow> query =
from testid in table.AsEnumerable()
where testid.Field<int>("TestId") == 5
select testid;

DataTable boundTable = query.CopyToDataTable<DataRow>();

падает с System.InvalidCastException: "Заданное приведение является недопустимым."
Не нравится testid.Field<int>("TestId")
Как быть?
...
Рейтинг: 0 / 0
Запрос на LINQ к DataTable на C#
    #40100341
mikka sikorsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сработало! Заменил int на decimal
...
Рейтинг: 0 / 0
Запрос на LINQ к DataTable на C#
    #40100353
mikka sikorsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечный результат:

var query =
from test in table.AsEnumerable()
where test.Field<decimal>("TestId") == 5
group test by test.Field<decimal>("QuestionId") into g
select new { Question = g.Key, AnswerCount = g.Count() };
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Запрос на LINQ к DataTable на C#
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (1): Анонимы (1)
Пользователи онлайн (8): Анонимы (6), Bing Bot 1 мин., Yandex Bot 2 мин.
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]