C# 过滤具有多个键(列)和多个值的 DataTable
C# Filter DataTable with multiple keys (columns) and multiple values
我有一个 table 包含三列 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)";
它过滤得很好,但它只显示一行(不是我真正需要的)。
有谁知道如何过滤具有多个值和多个键的数据表?
谢谢!
如果我没理解错的话,你可以用dv.RowFilter = "((A = 1 and B = 2) or (A = 2 and B = 1))"
您的原始过滤器没有给您任何结果的原因是 A
不能 = 1 AND 2,B
也是如此。您正在寻找的是一个或另一个。
我有一个 table 包含三列 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)";
它过滤得很好,但它只显示一行(不是我真正需要的)。
有谁知道如何过滤具有多个值和多个键的数据表?
谢谢!
如果我没理解错的话,你可以用dv.RowFilter = "((A = 1 and B = 2) or (A = 2 and B = 1))"
您的原始过滤器没有给您任何结果的原因是 A
不能 = 1 AND 2,B
也是如此。您正在寻找的是一个或另一个。