C#将多个过滤器应用于datagridview

时间:2016-06-28 08:07:58

标签: c# .net datagridview

我有一个用户输入的过滤器列表,我想将它们应用到我的DataGridView。将所有过滤器应用于DataGridView的最佳方法是什么?我的ColumnFilters列表基本上是一个字符串列表,分为:Column name, operand (=, >, < etc.)和用户输入的值。

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 个答案:

答案 0 :(得分:2)

bindingsource Filter支持AND,因此过滤器可以与以下内容结合使用:

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

(注意:使用上述内容时不需要foreach)