Удалить пустые строки в наборе данных - PullRequest
1 голос
/ 19 сентября 2011

Как удалить пустые строки в моем наборе данных?

Я читаю данные из таблицы Excel, в которой внизу есть несколько пустых строк.

Вот мой код:

ConnectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";", VariableFile);

OleDbConnection objConn = new OleDbConnection(ConnectionString);

objConn.Open();

OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM [Requirements$]", objConn);

OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();

objAdapter1.SelectCommand = objCmdSelect;

DataSet objDataset1 = new DataSet();

objAdapter1.Fill(objDataset1);

objConn.Close();

Ответы [ 3 ]

3 голосов
/ 05 октября 2011

Каждое найденное мной решение подсказывало мне модифицировать запрос Excel, как будто он у вас есть.Так что это не сильно поможет.Вы можете просто создать DataView из вашей таблицы, которая будет смотреть на непустые строки.Вы знаете, что такое столбцы заранее?Даже если вы этого не сделаете, вы все равно можете зациклить имена столбцов и построить строку фильтра для DataView.

string filter = "";

foreach (DataColumn dc in dt.Columns)
{
    filter += dc.ColumnName + " <> '' ";

    if (dt.Columns[dt.Columns.Count-1].ColumnName != dc.ColumnName)
    {
        filter += " AND ";
    }
}

DataView view = new DataView(dt);
view.RowFilter = filter;
dt = view.ToTable();
3 голосов
/ 19 сентября 2011

Почему бы просто не изменить ваш запрос, чтобы получить только непустые данные.

0 голосов
/ 15 января 2014

Используйте Linq, чтобы включить в любой из столбцов только строки, которые имеют ненулевое / пустое значение.

var filteredData = sourceDataTable.AsEnumerable()
         .Where(row => row.ItemArray.Any(col => !String.IsNullOrWhiteSpace(col.ToString())))
         .ToArray();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...