我有一个包含三列A, B
和C
的表格,其中A, B
是键,C
是相应的值。
我尝试使用多个键值来过滤它。为了做到这一点,我尝试过:
// Initialise some data
DataTable dt = new DataTable();
dt.Columns.Add("A", typeof(int));
dt.Columns.Add("B", typeof(int));
dt.Columns.Add("C", typeof(string));
dt.Rows.Add(1, 1, "temp1");
dt.Rows.Add(1, 2, "temp2");
dt.Rows.Add(2, 1, "temp3");
dt.Rows.Add(2, 2, "temp4");
dgv1.DataSource = dt;
// Filter the DataTable to show the second and third lines of `dt`
DataView dv = new DataView(dt);
dv.RowFilter = "(A = 1 and B = 2) and (A = 2 and B = 1)";
dgv2.DataSource = dv;
在RowFilter之后,dv
为空。但是我期待收到DataTable的第二行和第三行。
如果我这样做:
dv.RowFilter = "(A = 1 and B = 2)";
它过滤得很好,但它只显示一行(不是我真正需要的)。
有谁知道如何使用多个值和多个键过滤DataTable?
谢谢!
答案 0 :(得分:2)
如果我理解正确,您可以使用dv.RowFilter = "((A = 1 and B = 2) or (A = 2 and B = 1))"
您的原始过滤器没有给您任何结果的原因是因为A
可以' t = 1 AND 2,同样使用B
。你要找的是一个或另一个。