queryDataTable
包含其中的数据,如果检查结果为止该行与该单词相反,则将整行添加到extractedData
..但此时只有两行是添加到extractedData
数据表但是当我检查数据时,有22行添加到它是否有任何原因,代码在下面
DataTable dt = new DataTable();
for (int k = 0; k < queryDataTable.Rows.Count; k++)
{
string row = "";
string test = queryDataTable.Rows[k][0].ToString();
bool check = queryDataTable.Rows[k][0].ToString().StartsWith(queryString);
if (check)
{
int errorcheck = k;
extractedData.ImportRow(queryDataTable.Rows[errorcheck]);
}
}
我怎么只在第一个数据表中的某个索引处添加一行
答案 0 :(得分:0)
如果要检查整行,则此代码无法使用此指令:
queryDataTable.Rows[k][0].ToString().StartsWith(queryString);
你只检查k行的第一列。 首先,您可以使用这个更紧凑的代码:
DataTable dt = new DataTable();
for (DataRow r in dt.Rows)
{
if(r[0].startsWith(queryString))
{
extractedData.ImportRow(r);
}
}
if statament仅检查每行的第0列。如果您向我指定要执行的检查,我可以尝试修改此代码或创建linq查询。
答案 1 :(得分:0)
您可以简单地执行此操作。 (StartsWith检查字符串是否以子字符串开头)。
DataTable table = new DataTable();
table.Columns.Add("Dosage", typeof(int));
table.Columns.Add("Drug", typeof(string));
table.Columns.Add("Patient", typeof(string));
table.Columns.Add("Date", typeof(DateTime));
// Here we add five DataRows.
table.Rows.Add(25, "Indocin", "David", DateTime.Now);
table.Rows.Add(50, "Enebrel", "Sam", DateTime.Now);
table.Rows.Add(10, "Hydralazine", "Christoff", DateTime.Now);
table.Rows.Add(21, "Combivent", "Janet", DateTime.Now);
table.Rows.Add(100, "Dilantin", "Melanie", DateTime.Now);
var rows = table.AsEnumerable().Where(dr => dr.ItemArray.Contains("David"));
DataTable copyTable = new DataTable();
copyTable.Columns.Add("Dosage", typeof(int));
copyTable.Columns.Add("Drug", typeof(string));
copyTable.Columns.Add("Patient", typeof(string));
copyTable.Columns.Add("Date", typeof(DateTime));
foreach (var row in rows)
{
copyTable.Rows.Add(row.ItemArray);
}
的示例数据