c# - IQueryable 不包含“选择”的定义
问题描述
我正在尝试创建一个方法,该方法将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”不包含“Select”的定义,最好的扩展方法重载
'Queryable.Select<Object1, Object2> (IQueryable<Object1>, Expression<Func<Object1, Object2>>)'
需要“IQueryable”类型的接收器。
我不明白它如何无法识别我已经在子查询中以 lambda 的形式提供了一个表达式。我确保我同时使用 System.Linq 和 System.Data.Entity。它要求的委托类型已经存在,为什么不能编译?
另外,为了清楚起见,我这样做是因为稍后要执行其他子查询,这不是一对一的片段。我打算将方法调用作为服务进行扩展。
任何帮助将不胜感激,我可以根据需要提供更多详细信息,谢谢!
解决方案
你很可能需要
Expression<Func<Object1, bool>>
并替换.Select<Object1, Object2>(
为.Select(
,如评论中所述
推荐阅读
- r - 使用 data.table 时如何从字符向量中创建列名
- angular - VS 代码/Angular - Linter 无法识别通过共享模块导入的组件
- icalendar - 挪威语字符为“?” 在 ics c#
- java - 使用 Collectors.toMap 如何转换地图值
- kivy - Kivy buildozer:如何部署到特定的android设备
- excel - 如何从多个excel文件中删除多个工作表,名称为Sheet+number
- android - 尝试通过改造从 JsonPlaceHolder 获取帖子,但响应未显示方法
- javascript - 具有内部原因的默认值的角 ControlValueAccessor 脏
- batch-file - 使用 sed 在第一次出现后在找到的行之后追加一行
- node.js - Node js 上的 PWA 应用程序在 Safari 上获取数据