2009-12-15 226 views
0

是否可以在DataContext上创建扩展方法,而不是在datacontext中的表上,而是直接在dataContext上创建动态获取表的表单。datacontext上的扩展方法Linq to sql

例如:

DataContext dc = new DataContext(); 

var test = from a in dc.myExtensionMethod(args) select a; 

PS:我已经知道dc.GetTAbledc.GetTable<T>

+0

好像你正在重新发明轮子在这里。是否有一个特定的原因,您为什么不能使用GetTable ? – James 2009-12-15 15:09:59

回答

2

例:

namespace System.Data.Linq 
{ 
    public static class DataContextExtensions 
    { 
     public static bool IsConnected(this DataContext context) 
     { 
      return (context.Connection.State == ConnectionState.Open); 
     } 

    } 
} 
+0

谢谢,我会给克里斯阿诺德的答案,因为这是第一个回答。谢谢 – 2009-12-15 14:51:45

2

这是可能的,但因为类是局部的,你可以简单地添加你的方法在不同的文件

2

有点像这应该工作:

public static IQueryable myExtensionMethod(this DataContext dc) 
{ 
    ... 
} 
2

我不知道你的参数表是什么,或者,如果你想匹配GetTable的签名,可是......

namespace System.Data.Linq 
{ 
    public static class DataContextExtensions 
    { 
     public static (Table<T>,IQueryable, whatever) 
      MyExtensionMethod(this DataContext context, Args args) 
     { 
      //do your magic here 
     } 
    } 
}