|
Запрос на LINQ к DataTable на C#
|
|||
---|---|---|---|
#18+
Приветствую! Уважаемые знатоки 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 14:59 |
|
Запрос на LINQ к DataTable на C#
|
|||
---|---|---|---|
#18+
в чём проблема сделать группировку по тесту и вопросам и подсчитать кол-во ответов? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 15:11 |
|
Запрос на LINQ к DataTable на C#
|
|||
---|---|---|---|
#18+
Konst_One, я не силён в LINQ, такого раньше не делал. На MS SQL всё просто: Код: sql 1. 2. 3. 4.
А какой синтаксис на LINQ я не знаю. Поэтому прошу помощи для примера на будущее. Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 15:50 |
|
Запрос на LINQ к DataTable на C#
|
|||
---|---|---|---|
#18+
Попробовал сделать простенький запрос. На основе 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") Как быть? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2021, 21:39 |
|
Запрос на LINQ к DataTable на C#
|
|||
---|---|---|---|
#18+
Сработало! Заменил int на decimal ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2021, 21:45 |
|
Запрос на LINQ к DataTable на C#
|
|||
---|---|---|---|
#18+
Конечный результат: 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() }; ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2021, 23:23 |
|
|
start [/forum/topic.php?fid=17&tid=1349020]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
29ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 232ms |
total: | 363ms |
0 / 0 |