在Lambda表达式和表达式树中使用连接运算符的问题



我写这个方法:

public List<TResult2> SelectAndJoin<TOuter, TInner, TKey, TResult, TResult2>(IEnumerable<TInner> inner, 
                                                                      System.Linq.Expressions.Expression<Func<Regions, TKey>> outerKeySelector, 
                                                                      System.Linq.Expressions.Expression<Func<TInner, TKey>> innerKeySelector, 
                                                                      System.Linq.Expressions.Expression<Func<Regions, TInner, TResult>> resultSelector,
                                                                      Func<Regions, TResult2> selector)
    {
        using (RepositoryDataContext = new DataClasses1DataContext())
        {
                return RepositoryDataContext.Regions.Join(inner, outerKeySelector, innerKeySelector, resultSelector).AsEnumerable<TResult2>().Select<Regions, TResult2>(selector).ToList<TResult2>();
        }
    }

但是后面的表达式return有这个错误:

"来。IQueryable'不包含'AsEnumerable'的定义,并且最佳扩展方法重载'System.Linq.Enumerable.AsEnumerable(System.Collections.Generic.IEnumerable)'有一些无效参数

如何消除这个错误?

这个代码是标准的吗?

谢谢

调用AsEnumerable<TResult2>的可枚举对象类型为IQueryable<TResult>。你应该调用AsEnumerable<TResult>,或者你甚至可以省略通用参数而调用AsEnumerable()

同样,你的下一个选择也不会因为同样的原因而工作——你为泛型提供了错误的类型

我可能错过了重点…但是:

IQueryable继承自IEnumerable,所以我认为AsEnumerable()在这段代码中是不必要的。

如果您确实需要/想要在执行Select之前执行查询,那么您可以使用ToList()而不是AsEnumerable() -这会更清楚

我也想知道你是否在你的。cs文件中包括using System.Linq -因为AsEnumerable()System.Linq

中的扩展方法

相关内容

  • 没有找到相关文章