我的扩展方法是:
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/