Raja Ganapathy Ответов: 3

Как удалить столбцы после определенных столбцов в datatable с помощью C#?


Я хочу удалить столбцы из таблицы данных после определенных столбцов.Я использовал метод Remove, но это удаление столбцов '("Lead Time (WEEKS)")), которые я хочу удалить после столбцов' ("Lead Time (WEEKS)")).
Как это сделать
Я использовал приведенный ниже код.

Что я уже пробовал:

for (int i = 0; i < ds.Tables.Count; i++)
               {
                   for (int j = 0; j < ds.Tables[i].Columns.Count; j++)
                   {
                       if (ds.Tables[i].Rows[7][j].ToString().Trim().Contains("Lead Time (WEEKS)"))
                       {
                           int y = j;
                           if (ds.Tables[i].Rows[7][y + 1].ToString().Trim() == "" || ds.Tables[i].Rows[7][y + 1].ToString().Trim() != "")
                           {
                               int y1 = y + 1;
                               ds.Tables[i].Columns.RemoveAt(y1);
                           }
                       }
                   }
               }

Wendelius

Несколько вопросов: почему вы хотите удалить столбцы из таблицы данных и с какой проблемой вы сталкиваетесь с вашим кодом?

Raja Ganapathy

Этот набор данных представляет собой файл excel. я загружаю excel и конвертирую как набор данных, так и листы в таблицы данных.если пользователь не удаляет пустые столбцы после полей данных.возникают некоторые проблемы. я сделал некоторую проверку с помощью подсчета столбцов, так что проверка влияет на эти пустые столбцы или нежелательные данные.

3 Ответов

Рейтинг:
4

Karthik_Mahalingam

попробовать это

foreach (DataTable dt in ds.Tables)
       {
           bool flag = false;
           foreach (DataColumn col in dt.Columns)
           {
               if (col.ColumnName == "Lead Time (WEEKS)")
                   flag = true;
               if (flag && col.ColumnName != "Lead Time (WEEKS)")
                   dt.Columns.Remove(col);
           }
       }


Raja Ganapathy

Благодарить всех.

Karthik_Mahalingam

добро пожаловать :)

Рейтинг:
22

Suvendu Shekhar Giri

Сначала вы можете получить индекс столбца, после чего вы хотите удалить столбцы. Для этого вы можете использовать объект DataColumn.Порядковый Номер Имущества (Системы.Сведения)[^].

Что-то вроде-

int indexOfMyCol = myDataTable.Columns["Lead Time (WEEKS)"].Ordinal;

Теперь вы можете запустить цикл для удаления столбцов, начиная с indexOfMyCol + 1

Надеюсь, это поможет :)
Пожалуйста, дайте мне знать, если ваше требование является чем-то иным, чем это.


Raja Ganapathy

Как это сделать в наборе данных.

Рейтинг:
14

KARTHICKEYANRAJU

Hi, 

I am not good at this. But try below for your scenario

int indexofLeadTimeWEEKS = 0;
for (int i = 0; i < ds.Tables.Count; i++)
{
	if (ds.Columns[i].ColumnName == "Lead Time (WEEKS)")	
        {
         	indexofLeadTimeWEEKS = i;
        }
	if(indexofLeadTimeWEEKS != 0)
	{
		ds.Columns.Remove(ds.Columns[i].ColumnName);
		i = i -1;
		indexofLeadTimeWEEKS = indexofLeadTimeWEEKS - 1;
	}
}


-Karthick Raju