在DynamicLinq-query中使用扩展方法
本文关键字:扩展 方法 DynamicLinq-query | 更新日期: 2023-09-27 18:01:41
我想扩展Telerik RadGrid的过滤行为。例如,如果用户使用下面的单词"michele"过滤网格,它也应该返回包含"michpublic static bool IsSqlLikeMatch( this string input, string pattern ) { [...] }
this.MasterTableView.FilterExpression.Replace( "Contains", "IsSqlLikeMatch" );
但不幸的是,我得到以下错误信息:
类型'String'中不存在适用的方法'IsSqlLikeMatch'
Telerik RadGrid使用DynamicLinq。因此,我的问题是:"我可以在DynamicLinq中使用扩展方法吗?"我该怎么做呢?
编辑09/09/2011:我已经联系了Telerik的支持,这是他们的回答:
不幸的是,您无法扩展Telerik.Web.UI.dll中包含的动态链接函数。所以你对DynamicLinq类的改变不会影响到RadControls内部使用的ExpressionParser。但是,您可以尝试更改Dynamic Linq库,并通过从RadGrid解析中获取过滤器表达式来执行自定义过滤,并将它们传递给更改后的Dynamic Linq类方法,并将RadGrid绑定到返回的数据。我附上了一个小示例,演示了如何使用RadGrid的过滤器/排序表达式来过滤,排序和通过ObjectDataSource页面。
为了使用扩展方法,您必须为在其中定义扩展方法的类的名称空间拥有一个using
指令。
所以试着把你的类放在一个命名空间中,并为它添加using
。