我的扩展方法是:

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.

I also tried this signature:

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

我收到了这个错误:

方法“System.Linq.IQueryable`1[ProductLocale] FilterCultureSubQuery[ProductLocale](System.Data.Linq.Table`1[ProductLocale])”不支持转换为 SQL。

谢谢

最佳答案

你的方法的签名很好。问题是,如前所述,它“不支持转换为 SQL”。

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

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

关于c# - LINQ-to-SQL 和 subQuery 中的扩展方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/753453/

10-10 13:07