在select语句中动态地向对象添加新属性

时间:2016-02-18 07:48:30

标签: c# entity-framework reflection iqueryable

我需要在对象中添加一个新属性到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执行此操作?请指教。

0 个答案:

没有答案