SQL-запрос для заполнения набора данных несколькими таблицами данных на основе определенного столбца - PullRequest
3 голосов
/ 22 ноября 2011

У меня есть таблица SQL Server с именем tSongList, которая содержит следующую информацию:

colAlbumID, colSongName, colAlbumTrackNumber, colRequestedCount, colPlayPriority

Цель этой таблицы - помочь диджею вести список песен, которые диджей должен проигрывать, а какиеальбом они из.У меня есть класс C #, который возьмет список песен из определенного albumID и вычислит colPlayPriority на основе colRequestedCount.Я разработал этот класс, чтобы взять DataTable, содержащий столбцы выше, и вычислить необходимую информацию.

Поэтому мой вопрос заключается в том, хочу ли я использовать SQL для выбора всех строк из tSongList, как это сделать?Я получаю результат SQL в несколько DataTables сгруппированных по colAlbumID?Другими словами, я хочу DataTable для каждого альбома, содержащего информацию о песне.

Я знаю, что могу использовать SqlDataAdapter для заполнения DataSet, и, поскольку DataSet может содержать несколькоDataTables, есть ли способ создать SQL-запрос для возврата DataSet, содержащего DataTables, сгруппированного по albumID?

Кроме того, если это не может быть сделано, я должен просто выбрать всев один DataTable и использовать функцию Select, чтобы получить массив DataRow вместо?

Ответы [ 2 ]

1 голос
/ 22 ноября 2011

Один из вариантов - вернуть один объект DataTable и использовать LINQ для создания вашей группировки.

var albumGroups = from a in dtAlbums.AsEnumerable()
  group a by a.Field<int>("albumID") into g
  select new { colSongName = g.Field<string>("colSongName"), 
               colAlbumTrackNumber = g.Field<int>("colAlbumTrackNumber"),
               colRequestedCount = g.Field<int>("colRequestedCount"),
               colPlayPriority = g.Field<int>("colPlayPriority") };
0 голосов
/ 22 ноября 2011

Я думаю, что пример на MSDN покажет вам, как это сделать.Вы значительно упростите себе жизнь, если сначала правильно нормализуете свои данные.Вы можете создать иерархический DataSet с необходимыми связями, что упрощает получение всех песен для альбома.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...