Элегантный подход для получения CSV-строки из выбранных строк данных в datagrid

#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.