c# - .NET BindingSource.Filter 与正则表达式

标签 c# .net regex bindingsource

我正在使用 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/

相关文章:

c# - 如何对 WCF 项目进行集成测试?

c# - WinForms 中的 3D?

c# - 需要帮助为我的白名单制作这个正则表达式

c - C 注释的 Perl 风格正则表达式

javascript - 如何在 JavaScript 中验证 pin 码、手机号码和电子邮件

c# - 再次为特定异常启用 Break

c# - 使用光线转换检测障碍物并阻止玩家移动

c# - 比较两个xml文件并显示差异

javascript - 如何禁用 IE11 WebBrowser 控件缩放

c# - log4net C# 中的方法名称