1

DappermicroORMを使用しています。私はそれがこのような列挙可能なものを処理できると思いました:

string sql = @"SELECT * FROM Events WHERE TimestampTicks <= @TimestampTicks AND TelemetryId = @TelemetryId ORDER BY TimestampTicks DESC LIMIT 1";
var events = _connection.Query<ReplayEvent>(sql, telemetryIds.Select(ti => new { TimestampTicks = startTime.Ticks, TelemetryId = ti }));

悲しいかな、それは価値のないエラーを与えます。Queryメソッドには、複数の結果をマージする方法がありませんか?これを行う正しい方法は何ですか?

4

1 に答える 1

0

サブクエリを使用し、 Dapperページで参照されている「リストサポート」のビルドを使用してこれを行うことができると思います。

string sql = @"SELECT * FROM Events e WHERE TimestampTicks = 
    (SELECT MAX(TimestampTicks) FROM Events WHERE TimestampTicks <=@TimestampTicks AND TelemetryId = e.TelemetryId ) 
    AND e.TelemetryId IN @TelemetryIds;"
var events = _connection.Query<ReplayEvent>(sql, new {TelemtryIds = telemetryIds, TimestampTicks = startTime.Ticks});
于 2012-06-26T18:18:52.233 に答える