我需要分别过滤和保存与status列的Valid和Invalid属性匹配的行。 它没有数据源。所以我正在创建一个DataTable,过滤它并保存结果。但是过滤没有按预期工作,并且包含与表达式不匹配的结果
DataTable dt = new DataTable();
//Populating Virtual Table
foreach (DataGridViewColumn col in dataGridView4.Columns)
{
dt.Columns.Add(col.Name);
}
foreach (DataGridViewRow row in dataGridView4.Rows)
{
DataRow dRow = dt.NewRow();
foreach (DataGridViewCell cell in row.Cells)
{
dRow[cell.ColumnIndex] = cell.Value;
}
dt.Rows.Add(dRow);
}
现在创建一个包含结果的过滤表,其中名为Status的列等于“Valid”
filtered = dt.Copy();
DataTable filteredResults = new DataTable();
DataTable filteredResults2 = new DataTable();
// filtered.Columns.Remove("Status");
var expression = string.Format("Status LIKE '%{0}%'", "Valid");
if (filtered.Select(expression).Any())
{
filteredResults = filtered.Select(expression).CopyToDataTable();
}
但是过滤后的数据表包含状态列值为“无效”的元素。我做错了什么?请指教。
答案 0 :(得分:1)
您在表达式中使用LIKE
。 LIKE
检查值是否包含指定的值。请改用=
。