【发布时间】:2015-03-07 21:36:47
【问题描述】:
例如,我有这样的代码:
IQueryable<MyModel> q = new List<MyModel>().AsQueryable(); // this is just an example, this is obviously not a list
var query = from item in q select new { item.Property };
var oneItem = query.FirstOrDefault(x => x.SomeProperty == somevalue);
var allItems = query.ToArray();
现在情况有点复杂,我需要通过两种不同的方法获得oneItem 和allItems。因此,为了遵循 DRY,我想将我的查询移至私有方法,然后在消费方法中根据需要调用 this.GetQuery().FirstOrDefault() 或 .ToArray()。
但是,当我尝试使用 IQueryable<dynamic> 的方法时,我收到“表达式树可能不包含动态操作”错误。如果我将其更改为IQueryable<object>,那么我在oneItem 中的过滤将不起作用。
【问题讨论】:
-
'item.Property 的类型是什么?
-
@JenishRabadiya in prod 我选择了大约 22 个属性 - Guid?、DateTime?、string、int?、double、Boolean?。