C# 过滤具有多个键(列)和多个值的 DataTable

C# Filter DataTable with multiple keys (columns) and multiple values

我有一个 table 包含三列 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)";

它过滤得很好,但它只显示一行(不是我真正需要的)。

有谁知道如何过滤具有多个值和多个键的数据表?

谢谢!

如果我没理解错的话,你可以用dv.RowFilter = "((A = 1 and B = 2) or (A = 2 and B = 1))"

您的原始过滤器没有给您任何结果的原因是 A 不能 = 1 AND 2,B 也是如此。您正在寻找的是一个或另一个。