0

我需要根据用户选择的页面模式在网格中显示实体的所有或更少属性。例如我有三种页面模式

Minimal (will show 8 properties of an entity in the grid)

Standard (will show 12 properties of an entity in the grid)

Extended (will show 15 properties of an entity in the grid)

如何使 Select 谓词动态化以根据用户页面模式包含指定的实体列数。假设我有 15 个属性的实体公司我想做这样的事情

dbContext.Companies.Select([predicate for choosing different no of columns?])
4

1 回答 1

3

您无法使用Predicates解决此问题,因为它们总是返回bool

你需要的是一个函数表达式,它接受一个Company对象作为参数并返回一个object. 具体来说,你需要一个Expression<Func<Company, object>>.

这是您可以定义三种选择类型的方式:

Expression<Func<Company, object>> minimal = e => new { e.Prop1, ..., e.Prop8 };
Expression<Func<Company, object>> standard = e => new { e.Prop1, ..., e.Prop12 };
Expression<Func<Company, object>> extended = e => new { e.Prop1, ..., e.Prop15 };

然后根据需要使用它们:

dbContext.Companies.Select(minimal);
// or
dbContext.Companies.Select(standard);
// or
dbContext.Companies.Select(extended);
于 2013-02-13T15:30:49.400 回答