当前位置 : 主页 > 编程语言 > c语言 >

c# – subQuery中的LINQ-to-SQL和Extension方法

来源:互联网 收集:自由互联 发布时间:2021-06-25
我的扩展方法是: public static IEnumerableT FilterCultureSubQueryT(this TableT t) where T : class { return t; } 我试图在这个查询中使用它 var test = from p in t.Products select new { Allo = p, Allo2 = (from pl in t.Produc
我的扩展方法是:

public static IEnumerable<T> FilterCultureSubQuery<T>(this Table<T> t)
    where T : class
    {
      return t;
    }

我试图在这个查询中使用它

var test = from p in t.Products
             select new
             {
               Allo = p,
               Allo2 = (from pl in t.ProductLocales.FilterCultureSubQuery()
                        select pl)
             };

什么应该是我的方法扩展的签名?我总是得到这个错误:

Method 'System.Collections.Generic.IEnumerable`1[ProductLocale] FilterCultureSubQuery[ProductLocale](System.Data.Linq.Table`1[ProductLocale])' has no supported translation to SQL.

我也试过这个签名:

public static IQueryable<T> FilterCultureSubQuery<T>(this Table<T> t)
    where T : class
    {
      return t;
    }

我收到了这个错误:

Method 'System.Linq.IQueryable`1[ProductLocale] FilterCultureSubQuery[ProductLocale](System.Data.Linq.Table`1[ProductLocale])' has no supported translation to SQL.

谢谢

你方法的签名很好.问题是,如上所述,它“没有支持的SQL转换”.

DLINQ正在尝试将该语句转换为将发送到数据库的SQL行.该方法没有翻译.

我建议使用Where子句重写过滤器.

网友评论