質問: テーブルのような ``` datetime a1 b1 x2 ... 07-01-2009 13:10 8 9 10 07-01-2009 13:11 8 8 2 07-01-2009 13:12 9 1 1 ``` 1日あたり1日1行(= 86400行); 〜40カラム;すべて同じフォーマット 最大値と指定する列の時間を取得する方法を探しています。 時間枠内で列が指定する最大値と対応する時間を取得する方法を探しています。 何かのようなもの ``` Select top 1 time,a1 from table where (datetime>=begin and datetime= @0 AND t < @1", begin, end) _ .OrderBy("@0 desc", col) _ .Take(1) _ .Select(col) ``` しかし、これはテーブルの最初の値を返します。これは、最大値ではなく、時間枠の最初の値を返します。 SQLプロファイラーを見ると、ORDER句がないことがわかります。 何か案が? アップデート2 なんらかの理由で、orderby句で置換値が機能しません。 .OrderBY(col + "desc")は機能します
回答: 列名を動的にしたい場合は、 VS2008コードサンプルの Dynamic Linqを使用できます 。次に、ソートする列の名前を指定できます。 ``` var query = context.table .Where( t = t.begin <= date && date < t.end ) .OrderBy( "a1 desc" ) .Take(1) .SingleOrDefault(); ```