我正在使用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();
这个代码可以如预期地工作,给我所感兴趣的那些列。
现在,我需要使用表达式树动态构建“Select”调用,类似于这里。
我该如何实现呢?通过表达式构建匿名对象像上面那样是可行的吗?
编辑:我的用例是我有一个通用的dB上下文类,它接受要提取的列的字符串列表。过去,我们返回所有列,忽略该输入列表。因此,现在我需要动态生成选择语句,仅返回所需的子列,可以通过匿名对象或动态创建的DTO来完成。
谢谢