我需要在对象中添加一个新属性到select语句中。我只在运行时知道属性的名称。我需要这样的东西:
var propName = "Some name"; // calculated in runtime
// query is IQueryable
query = query.Select(item => new SomeDynamicObject(item)
{
propName = 1
});
我需要有一个项目的副本,该项目具有一个名为的新属性,可以在运行时计算。此外,查询应该是IQueryable
,因为查询应该在数据库中执行。
我尝试使用ExpandoObject
,但它仅适用于IEnumerable
:
var propName = "Some name"; // calculated in runtime
query.AsEnumerable().Select(item =>
{
// ToDynamic create ExpandoObject instanse from existing object
var expando = item.ToDynamic() as IDictionary<string, object>;
expando.Add(propName, 1);
return (dynamic)expando;
});
最后,我想使用Expression.Call()
对这个新属性进行排序。
如何使用IQueryable
执行此操作?请指教。