0

ユーザーが選択したページ モードに基づいて、エンティティのすべてまたは一部のプロパティをグリッドに表示する必要があります。たとえば、3 つのページ モードがあります。

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

述語は常にを返すため、述語を使用してこれを解決することはできませんbool

必要なのは、Companyオブジェクトをパラメーターとして受け取り、を返す関数式ですobject。具体的には、が必要ですExpression<Func<Company, object>>

これは、3つのタイプの選択を定義する方法です。

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 に答える