我正在使用BindingSource.Filter仅列出数据源的某些元素。
特别是我经常这样使用它:

m_bindingSourceTAnimation.Filter = "Name LIKE '" + FilterText + "'";

现在我的问题是,是否可以在这些过滤器中使用正则表达式。

我特别需要多个通配符(*),例如
*hello*world*

谢谢!

最佳答案

您可以使用LINQ轻松查询DataTable,然后可以在查询中使用实际的Regex对其进行任意过滤。

像这样的东西

var source = myDataTable.AsEnumerable();

var results = from matchingItem in source
              where Regex.IsMatch(matchingItem.Field<string>("Name"), "<put Regex here>")
              select matchingItem;

//If you need them as a list when you are done (to bind to or something)
var list = results.ToList();

这将为您提供基于实际Regex匹配的行,我不知道您需要使用该信息做什么,但这将使您能够基于Regex获得行。

****更新**-尝试根据评论进行澄清

我不知道您正在使用它做什么,所以我没有很好的上下文,但是从我可以猜到您正在使用DataTable将数据绑定(bind)到Grid或类似的东西。如果是这种情况,我认为您应该能够从我在此处输入的代码片段中分配“列表”作为数据源(假设您使用的是BindingSource),并且我认为它将起作用。我不使用DataTables,我通常会坚持使用对象来处理数据,因此我不确定该如何处理行列表,但是我认为它会起作用(或者足够紧密,以至于有些Google搜索)会做到)。

关于c# - 带有正则表达式的.NET BindingSource.Filter,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/819526/

10-11 00:17