【发布时间】:2019-09-15 14:55:33
【问题描述】:
我在 EF 上下文中有 GetEntities 方法。在某些情况下,我不想在内存中加载实体的所有属性。我只想加载“选定”属性。我使用匿名对象只获取特殊属性。例如,我有 Product 实体,我只获得 Name 和 Cost 属性(仅供阅读)。
context.GetEntities<Product>().Select(a => new { a.Name,a.Cost }).ToList();
我在很多地方都在使用它。所以,我创建了 PropertyNames 集合,我想创建 GetEntities 方法来获取具有这些属性的实体:
public object GetEntities<T>(IEnumerable<string> proeprtyNames)
{
return //anonymous entities which have only proeprtyNames properties
}
如何创建这个方法?而且我也不知道方法的返回类型应该是什么
【问题讨论】:
-
您不能将匿名类型定义为返回类型。您可能能够返回动态类型,但这并不是真正的类型安全编程。我认为你应该直接在你的逻辑中编写这段代码,这种方法并不能真正为你节省任何东西。
-
我不会按照你的意图去做。但是要使其正常工作,您应该查看 System.Reflection。在那里,您可以将属性作为集合访问。
标签: c# entity-framework anonymous-methods