2009-12-15 107 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 
     } 
    } 
}