次のように EF + LINQ でクエリできるテーブルがあるとします。
var results = dbContext.MyTable.Where(q => q.Flag = true);
次に、返される列を制限したい場合は、次のようにその行に選択を追加するだけです。
var results = dbContext.MyTable
.Select(model => new { model.column2, model.column4, model.column9 })
.Where(q => q.Flag == true);
私が理解する必要がある次のステップは、それらの列を動的に選択する方法です。別の言い方をすれば、コンパイル時にそれらが何であるかを知らなくても、テーブル内の列を選択できる必要があります。したがって、たとえば、次のようなことができる必要があります。
public IEnumerable<object> GetWhateverColumnsYouWant(List<string> columns = new List<string{ "column3", "column4", "column999"})
{
// automagical stuff goes here.
}
返されるレコードの値を厳密に型指定しておくことが重要です。つまり、値を文字列のリストにそのままダンプすることはできません。これは反射で達成できるものですか?それとも、ジェネリックの方がこれに適していますか? 正直なところ、どこから始めればよいかわかりません。
助けてくれてありがとう。