2016-06-28 4 views
0

У меня есть список фильтров, которые есть у пользователя, и я хочу применить их к моему DataGridView. Каков наилучший способ применить все фильтры к DataGridView? Мой список ColumnFilters - это в основном список строк, которые разбиты на: Column name, operand (=, >, < etc.) и значение ввода пользователя.C# применить несколько фильтров к datagridview

public void ApplyFilters(List<ColumnFilter> filters) 
{ 
    if (filters.Count > 0)) 
    { 
     foreach (ColumnFilter filter in filters) 
     { 
      BindingSource bs = (BindingSource)dataGridView1.DataSource; 
      bs.Filter = string.Format("{0} {1} '{2}'", filter.ColumnName, filter.Operand, filter.Value); 
      dataGridView1.DataSource = bs; 
     } 
    } 
} 

ответ

1

BindingSource Filter поддерживает AND, поэтому фильтры можно комбинировать с чем-то вроде:

bs.Filter = string.Join(" AND ", filters.Select(filter=>string.Format("{0} {1} '{2}'", filter.ColumnName, filter.Operand, filter.Value).ToArray()); 

(Примечание: Еогеасп не требуется при использовании выше)

+0

Может же быть чтобы работать с одним фильтром? В противном случае я могу поставить для этого простую проверку, но было бы здорово, если бы вся логика была в одной строке. – Iason

+0

На самом деле я использую .NET 3.5, поэтому у меня может возникнуть проблема с компиляцией – Iason

+0

Он должен работать только с одним фильтром. Это красота string.join. Если в перечислении есть только один элемент, он не добавляет разделитель (AND). –

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