У меня есть ADO DataTable следующегоDynamic LINQ GroupBy и выберите столбцы из ADO DataTable и вернуть DataTable
tname cname rgname schools mtext
tn1 cn1 rg1 1 mxt1
tn1 cn1 rg1 2 mxt1
tn1 cn1 rg1 3 mxt1
tn2 cn2 rg2 5 mxt2
tn2 cn2 rg2 8 mxt2
tn2 cn2 rg2 3 mxt2
tn3 cn1 rg1 7 mxt1
tn3 cn1 rg1 4 mxt1
Я хочу, чтобы создать таблицу из приведенных выше таблиц, группируя и конкатенацию школы запятой разделена. Результат должен выглядеть так:
tname cname rgname schools mtext
tn1 cn1 rg1 1,2,3 mxt1
tn2 cn2 rg2 5,8,3 mxt2
tn3 cn1 rg1 7,4 mxt1
Я знаю группу по столбцам только во время выполнения. Я также хочу, чтобы результат был аналогичным, поскольку число столбцов больше (до 15). S можно использовать динамическую группу и выбрать лямбда-выражение.
Я реализовал логику для динамической группы, но динамический выбор беспокоит меня.
var result = from o in DT.AsEnumerable()
group o by new
{
cname = groupByCname? o.Field<string>("cname") : null,
tname = groupByTname? o.Field<string>("tname") : null,
rgname = groupByRGname? o.Field<string>("rgname") : null,
mtext = groupByMtext? o.Field<string>("mtext") : null,
} into g
select new
{
//Here i want to select all columns from DT and have schools as
// comma separated
schools = String.Join(",",g.Select(x=>x.Field<string> ("Schools")).ToArray())
};
Спасибо за вашу помощь
Это сближается: http://stackoverflow.com/q/31082791/861716 –
На самом деле, ваш собственный код будет делать хорошо для меня. –
Вышеупомянутый ожидает единственный параметр, но у меня есть возможность для нескольких групп. Так может быть указанная выше ссылка не работает. –