2016-08-18 7 views
2

テーブルに対してクエリを実行するためにEntity Frameworkを使用していますか。しかし、私は選択列を取得する必要があります。匿名オブジェクトを使用した動的Linq選択式の作成方法

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 ..... 
} 

私は予想通りこれはちょうどそれらの列がに興味を持って私を与え、作品

dbContext.MyEvents 
     .Select(s => 
      new { 
        Name = s.Name, 
        Id = s.Id, 
        EventStage = new 
        { 
         Name = s.EventStage.Name, 
         Id = s.EventStage.Id 
        } 
       } 
      ) 
      .ToList(); 

としてこれらを返すように IQueryableを書くことができます。

今、私は「を選択することを構築する必要があります'式ツリーを使って動的に呼び出す、何かlike here

どうすれば実現できますか?上記のような任意のオブジェクトを式で構築することは実現可能ですか?

EDIT: 私の場合、フェッチする文字列として列のリストを取る汎用dBコンテキストクラスがあります。以前は、入力リストを無視してすべての列を返していました。したがって、匿名オブジェクトまたは動的に作成されたDTOを使用して行うことができる、必要な列のサブセットのみを返すようにselect文を動的に生成する必要があります。

ありがとうございます。

+0

使い方の例を挙げてください。 – Michael

+0

匿名クラスはコンパイル時には実際のクラスです。したがって、実行時にラムダを作成するには、実行時にクラスを作成する必要があります。リフレクションを使用してクラスの型とフィールドを作成し、それを使ってクエリを構築します(私はそれが奇妙なので自分で作っていません)。 – Szer

+0

@Michael:ユースケースを更新しました – sppc42

答えて

-2

厳密に型指定されたオブジェクトを定義して返します。私は動的オブジェクトを使用しないでください。

注:匿名オブジェクトを返すことはできません。

+0

私の答えに何が起こったかわからないので、私はそれを再投稿しました。 –

関連する問題