使用Entity Framework在表上运行查询。但是,我只需要选择列。
class MyEvent
{
public string Name { get; set; }
public int Id { get; set; }
virtual Stage EventStage { get; set; }
..... more columns .....
}
class Stage
{
public string Name { get; set; }
public string Location { get; set; }
..... more columns .....
}
我可以写一个IQueryable
来将这些作为
dbContext.MyEvents
.Select(s =>
new {
Name = s.Name,
Id = s.Id,
EventStage = new
{
Name = s.EventStage.Name,
Id = s.EventStage.Id
}
}
)
.ToList();
这可以按预期工作,只给我感兴趣的那些列。
现在,我需要构建那个'选择'使用表达式树动态调用,like here。
我怎样才能实现这一目标?是否可以通过表达式构造一个无关的对象,如上所述?
编辑: 我的用例是我有一个通用的dB上下文类,它将列列表作为要获取的字符串。在过去,我们返回所有列,忽略该输入列表。所以,现在我需要动态生成select语句以仅返回所需的列子集,这可以通过匿名对象或动态创建的DTO来完成。
由于
答案 0 :(得分:0)
也许您可以从此处使用类似ToDynamic
方法的方法:
https://gist.github.com/volak/20f453de023ff75edeb8
此问题的可能用例: 让用户选择要显示的列并仅查询那些选定的列,因此您不必总是查询数据库中的整个实体。
答案 1 :(得分:-2)
定义强类型对象并返回该对象。我会避免使用动态对象。
注意:您无法返回匿名对象。