我正在使用 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();
这将为您提供基于实际正则表达式匹配的行,我不知道您需要如何处理这些信息,但这将允许您根据正则表达式获取行。
****更新** - 尝试根据评论进行澄清
我不知道你用这个做什么,所以我没有很好的上下文,但据我猜测,你正在使用 DataTable 将数据绑定(bind)到 Grid 或类似的东西。如果是这种情况,我认为您应该能够从我放在此处的代码片段中将“列表”分配为数据源(假设您使用的是 BindingSource),我认为它会起作用。我不使用 DataTables,我通常坚持使用对象来处理我的数据,所以我不确定它将如何处理行列表,但我认为它会起作用(或者足够接近以进行一点谷歌搜索会做的)。
关于c# - .NET BindingSource.Filter 与正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/819526/