| 
 | 
| 
 
Запрос на 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&msg=40099805&tid=1349020]:  | 
    0ms | 
get settings:  | 
    10ms | 
get forum list:  | 
    15ms | 
check forum access:  | 
    2ms | 
check topic access:  | 
    2ms | 
track hit:  | 
    70ms | 
get topic data:  | 
    9ms | 
get forum data:  | 
    2ms | 
get page messages:  | 
    41ms | 
get tp. blocked users:  | 
    1ms | 
| others: | 15ms | 
| total: | 167ms | 

| 0 / 0 | 

    Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
    
    
    «На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
    
    
    ... ля, ля, ля ...