Je pensais que Dapper pourrait fusionner plusieurs requêtes comme celle-ci

c# dapper sqlite

Question

J'utilise le micro ORM Dapper. Je pensais que cela pourrait gérer les énumérables comme ceci:

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

Hélas cela donne une erreur sans valeur. La méthode de requête ne permet-elle pas de fusionner plusieurs résultats? Quelle est la bonne façon de faire cela?

Réponse acceptée

Je pense que vous pouvez le faire en utilisant une sous-requête et en utilisant le composant "List Support" référencé sur la page 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});



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi