将DataGridview中的项过滤到DataTable会生成无效结果

时间:2018-02-27 18:11:34

标签: c# .net datagridview datatable

我有以下datagridview。 enter image description here

我需要分别过滤和保存与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();                 

                }

但是过滤后的数据表包含状态列值为“无效”的元素。我做错了什么?请指教。

1 个答案:

答案 0 :(得分:1)

您在表达式中使用LIKELIKE检查值是否包含指定的值。请改用=