我写这个方法:
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