Как получить все строки, кроме указанных столбцов из DataTable? - PullRequest
1 голос
/ 08 марта 2010

В настоящее время у меня возникают некоторые проблемы с получением некоторых данных из DataTable путем выбора всех строк, но только нескольких столбцов.

Чтобы быть немного более наглядным, приведу небольшой пример:

Пример данных

| ID | FirstName | LastName | Age |
+----+-----------+----------+-----+
|  1 | Alice     | Wannabe  | 22  |
|  2 | Bob       | Consumer | 27  |
|  3 | Carol     | Detector | 25  |

Что у меня есть

Так что мы получили из нашего графического интерфейса IEnumerable<DataColumn> selectedColumns, и там мы найдем два элемента ( FirstName и LastName ).

Теперь мне нужен какой-то результат, который содержит все строки, но только два столбца выше (или любой другой список выбранных столбцов).

До сих пор я уже использовал LINQ для нескольких одномерных объектов, но этот двухмерный объект вызывает у меня небольшую головную боль.

// The hard-coded way
Table.AsEnumerable().Select(row => new { FirstName = row[1], LastName = row[2] });

// The flexible way
Table.AsEnumerable().Select(row => row ???)

Но как теперь я могу сказать, какие столбцы из строки следует выбирать с помощьюиспользуя мои selectedColumns?

Ответы [ 2 ]

3 голосов
/ 08 марта 2010

Вам не нужен Linq для этого:

string[] selectedColumns = new[] { "ID", "LastName" };

DataTable tableWithOnlySelectedColumns =
    new DataView(table).ToTable(false, selectedColumns);
0 голосов
/ 16 февраля 2016

Вы можете использовать следующий код, чтобы получить аналогичный вывод-

var result = Table.AsEnumerable().Select(row => 
             new { 
                   FirstName = row.ItemArray[Table.Columns["FirstName"].Ordinal], 
                   LastName = row.ItemArray[Table.Columns["LastName"].Ordinal] 
                 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...