私はDapperがこのように複数のクエリをマージできると考えました

c# dapper sqlite

質問

私はDapperマイクロORMを使用しています。私はそれがこのような列挙型を扱うことができると思った:

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メソッドに複数の結果をマージする方法はありませんか?これを行う正しい方法は何ですか?

受け入れられた回答

私はあなたがサブクエリを使用してこれを行うことができ、 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});


ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow