Pensé que Dapper podría fusionar múltiples consultas como esta

c# dapper sqlite

Pregunta

Estoy usando el Dapper micro ORM. Pensé que podría manejar enumerables como este:

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 }));

Por desgracia, da un error inútil. ¿El método de consulta no tiene una forma de fusionar resultados múltiples? ¿Cuál es la forma correcta de hacer esto?

Respuesta aceptada

Creo que podrías hacer esto usando una subconsulta y usando la construcción en 'List Support' referenciada en la página 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});


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow