#c# #csv #datarow
#c# #csv #datarow
Вопрос:
У меня есть таблица данных, содержащая имена системных профилей. Затем эта таблица назначается в качестве источника данных таблицы данных, где администратор пометит несколько строк как выбранные.
Я хотел бы сохранить выбранные имена профилей в виде строки, разделенной запятой. Я собирался сделать это следующим образом:
string AllowedProfiles = string.Empty;
// Retrieve the selected profiles from the data grid
DataRow[] profiles = (this.dgv_SecurityProfiles.DataSource as System.Data.DataTable).Select("profile_OK = 1");
// Ensure we have some data to assign to the CSV string
if( profiles != null amp;amp; profiles.Length > 0 )
{
// Build the CSV string of the selected names.
foreach( DataRow row in profiles )
{
// Use the second column in the DataTable (first is the check column)
AllowedProfiles = string.Format("{0},", row[1]);
}
// Remove the last comma
AllowedProfiles = AllowedProfiles.Substring(0, AllowedProfiles.Length - 1);
}
Хотя приведенный выше код работает, я не считаю, что это самый элегантный способ продвижения вперед.
Есть предложения о том, как я мог бы это улучшить?
Ответ №1:
Вы можете использовать этот запрос linq
string AllowedProfiles = profiles.Aggregate(string.Empty, (current, row) => current string.Format(",{0}", row[1])).Remove(0,1);
Комментарии:
1. Это именно тот тип элегантности, который я искал. Спасибо. Я думаю, мне нужно изучить Linq.