查找数据表的空单元格(在某些列中除外)

时间:2018-09-26 23:52:54

标签: c# linq datatable

我正在使用上载模块并使用ExcelDataReader插件验证Excel文件的模块。 excel每行5列。我已经将上传的文件转换为数据表,现在我需要验证的是除了最后一列的单元格之外没有空单元或空单元格。

我有一个片段用linq查找空值,但是它适用于每一列。

DataSet result = reader.AsDataSet();
DataTable excelTable = result.Tables[0];

var rowList = excelTable.AsEnumerable().Select(x => x.ItemArray).ToList();
var emptyCells = rowList.Select((value, index) => new { value, index })
                         .Where(x => x.value.Any(y => y == null || y == DBNull.Value))
                         .Select(x => x.index).ToList();

if(emptyCells.Any())
{
    emptyCells.ForEach(x => {
           data.Errors.Add(new ExcelError { Row = x, Details = "This row has empty cells." });
    });
}

如何排除DataTable的最后一列或especific列?预先感谢!

1 个答案:

答案 0 :(得分:0)

您可以在值数组上使用.Where来忽略特定的索引:

.Where(x => x.value
    .Where((y, idx) => idx != 3)
    .Any(y => y == null || y == DBNull.Value)
)