我有一个从Excel工作表填充的DataTable
,现在需要根据该列中的内容对数据进行操作。C#:遍历未知名称的DataTable列来检查数据
例如,如果ColumnA
具有数字1,2和3的组合,则不改变该列,但如果ColumnA
不具有那种组合,则应删除该列。
现在问题出现,如果我使用dataTable.Select("")
方法。
我不知道列名和我将如何完成所有列,实际上跨列应用where子句。这个操作全部基于列而不是行。
如果任何人有建议或可以指向我的正确方向请做。
编辑 下面是用ExcelSheet填充DataTable的代码。
ds = new DataSet();
using (OleDbConnection con = new OleDbConnection(Excel07ConString))
{
using (OleDbCommand cmd = new OleDbCommand())
{
using (OleDbDataAdapter oda = new OleDbDataAdapter())
{
cmd.Connection = con;
con.Open();
DataTable dtExcelSchema = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
for (int i = 0; i < dtExcelSchema.Rows.Count; i++)
{
sheetName = dtExcelSchema.Rows[i]["TABLE_NAME"].ToString();
DataTable dt = new DataTable();
cmd.Connection = con;
cmd.CommandText = "SELECT * FROM [" + sheetName + "]";
oda.SelectCommand = cmd;
oda.Fill(dt);
dt.TableName = sheetName;
comboBoxData.Add(sheetName.Replace("$", ""));
ds.Tables.Add(dt);
}
}
}
}
是列无名,因为他们的名字不是从Excel中的标题行传送来的,或者你无法从'DataTable.Columns'获取它们?这可能有助于显示迄今为止编写的代码。 – dlatikay
@dlatikay列被命名,但最初填充dataTable后,我不能告诉名称和列数。我不想将这些名称硬编码,因为Excel工作表有不同的名称和格式。所以我们需要盲目地工作。我将用代码编辑问题。 –
是否适用于每列的内容?那么它只会意味着迭代'foreach(dataTable.Columns中的var列){...}',并使用循环中的列名动态构建您的查询。 – dlatikay