IQueryable 不包含 'Select' 的定义
IQueryable does not contain a definition for 'Select'
我正在尝试创建一个方法,它将 Func<Object1, bool>
作为 where 子句并对其执行 Select 作为子查询。这似乎在 IQueryable
上导致错误,无法将其转换为要解析的表达式。
using System.Linq
using System.Data.Entity;
public IEnumerable<Object2> CreateObject2List<T> (Expression<Func<T, Object1> whereClause)
{
var parentQuery = (from r in dataSet.SomeObject
select new Object1 { Value1 = r.value1, Value2 = r.Value2 }
var subQuery = parentQuery.Where(whereClause)
.Select<Object1, Object2>( o => new Object2{
Value3 = Value1 + Value2,
Value4 = Value1 - Value2
})
return subQuery.ToList();
}
子查询出现问题。它指出:
'IQueryable' does not contain a definition for 'Select' and the best
extension method overload 'Queryable.Select<Object1, Object2>
(IQueryable<Object1>, Expression<Func<Object1, Object2>>)'
requires a
receiver of type 'IQueryable'.
我不明白为什么它无法识别我已经在子查询上以 lambda 形式提供了一个表达式。我确保我同时使用 System.Linq 和 System.Data.Entity。它要求的委托类型已经存在,为什么它不能编译?
此外,为了清楚起见,我这样做是因为稍后还有其他子查询要执行,这不是一对一的片段。我打算将方法调用作为服务进行扩展。
如有任何帮助,我们将不胜感激,我可以根据需要提供更多详细信息,谢谢!
您很可能需要
Expression<Func<Object1, bool>>
并将.Select<Object1, Object2>(
替换为.Select(
,如评论中所述
我正在尝试创建一个方法,它将 Func<Object1, bool>
作为 where 子句并对其执行 Select 作为子查询。这似乎在 IQueryable
上导致错误,无法将其转换为要解析的表达式。
using System.Linq
using System.Data.Entity;
public IEnumerable<Object2> CreateObject2List<T> (Expression<Func<T, Object1> whereClause)
{
var parentQuery = (from r in dataSet.SomeObject
select new Object1 { Value1 = r.value1, Value2 = r.Value2 }
var subQuery = parentQuery.Where(whereClause)
.Select<Object1, Object2>( o => new Object2{
Value3 = Value1 + Value2,
Value4 = Value1 - Value2
})
return subQuery.ToList();
}
子查询出现问题。它指出:
'IQueryable' does not contain a definition for 'Select' and the best extension method overload
'Queryable.Select<Object1, Object2> (IQueryable<Object1>, Expression<Func<Object1, Object2>>)'
requires a receiver of type 'IQueryable'.
我不明白为什么它无法识别我已经在子查询上以 lambda 形式提供了一个表达式。我确保我同时使用 System.Linq 和 System.Data.Entity。它要求的委托类型已经存在,为什么它不能编译?
此外,为了清楚起见,我这样做是因为稍后还有其他子查询要执行,这不是一对一的片段。我打算将方法调用作为服务进行扩展。
如有任何帮助,我们将不胜感激,我可以根据需要提供更多详细信息,谢谢!
您很可能需要
Expression<Func<Object1, bool>>
并将.Select<Object1, Object2>(
替换为.Select(
,如评论中所述