C#使用多个键(列)和多个值过滤DataTable

时间:2015-02-06 18:54:15

标签: c# datatable dataview

我有一个包含三列A, BC的表格,其中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?

谢谢!

1 个答案:

答案 0 :(得分:2)

如果我理解正确,您可以使用dv.RowFilter = "((A = 1 and B = 2) or (A = 2 and B = 1))"

您的原始过滤器没有给您任何结果的原因是因为A可以' t = 1 AND 2,同样使用B。你要找的是一个或另一个。