2015-02-06 4 views
0

У меня есть таблица с тремя столбцами A, B и C, где A, B - это ключи, а C - соответствующее значение.C# Фильтр DataTable с несколькими ключами (столбцами) и несколькими значениями

Я пытаюсь отфильтровать его с несколькими значениями для ключей. Для того, чтобы сделать это, я пробовал:

// 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

Если я правильно понимаю, вы можете использовать 'dv.RowFilter =" ((A = 1 и B = 2) или (A = 2 и B = 1)) " –

ответ

2

Если я правильно понимаю, вы можете использовать dv.RowFilter = "((A = 1 and B = 2) or (A = 2 and B = 1))"

причину, по которой оригинальный фильтр не дает вам никаких результатов, потому, что A не можете = 1 и 2, также с B. То, что вы ищете, одно или другое.

Смежные вопросы