C# Создание списков из таблицы данных - PullRequest
0 голосов
/ 30 марта 2020

У меня есть DataTable, который содержит результаты запроса SQL. Я хочу l oop через таблицу и построить подсписки на основе аналогичных результатов в поле. Как мне это сделать?

Например, моя таблица данных имеет следующие записи:

Цвет, Количество

Красный, 1
Синий, 1
Синий , 2
Красный, 2
Желтый, 1

Я хочу иметь возможность группировать их так, чтобы мои результаты были

Список1:

Красный, 1
Красный, 2

Список 2:

Синий, 1
Синий, 2

Список 3:

Желтый, 1

1 Ответ

0 голосов
/ 30 марта 2020

Это легко сделать с помощью Linq:

var groups = table.Rows.Cast<DataRow>().GroupBy(z => z["Color"]).Select(z => z.ToList()).ToList();

for (int i = 0; i < groups.Count(); i++)
{
    Console.WriteLine("Group " + (i + 1).ToString());
    foreach (var item in groups[i])
        Console.WriteLine(item["Color"] + ",  " + item["Count"].ToString());
    Console.WriteLine("");
}

Приведение строк с помощью Cast<DataRow>() позволяет перечислять строки с помощью Linq. GroupBy() помещает строки в группы, где они имеют одинаковое значение Color. Select() получает группы в виде списка. Результатом является список, содержащий ваши группы (точнее, List<List<DataRow>>()). Измените и приведите результаты в соответствии с вашими требованиями.

...