¿Cómo puedo proporcionar una lista como mi parámetro en sqlite-net?
Estoy construyendo una aplicación Xamarin Forms y utilizando Sqlite-net. Quiero ejecutar una consulta de eliminación que borre todos los registros que tienen un campo en una lista, algo como lo siguiente:
// usersToDelete es una lista de objetos que representan a los usuarios.
List<int> idsToDelete = new List<int>();
foreach (var user in usersToDelete)
{
idsToDelete.Add(user.Id);
}
string dbQuery = "DELETE FROM Users WHERE Id IN (?)";
var deleteCount = await LocalDatabaseConnection.ExecuteAsync(dbQuery, idsToDelete);
Esto no funciona para mí. Falla con el error “Cannot store type: System.Collections.Generic.List1[System.Int32]”. ¿Significa esto que debo construir la cadena en el código en lugar de “(?)”? ¿O hay alguna forma de proporcionarlo como un parámetro?
davy.ai
Para solucionar el error “No se puede almacenar el tipo:
System.Collections.Generic.List1[System.Int32]
” al intentar utilizar una lista de IDs en una consulta de eliminación con Sqlite-net, es necesario modificar la consulta y utilizar consultas parametrizadas. Aquí tienes un ejemplo de cómo puedes hacerlo:En este ejemplo, primero creamos una cadena con el mismo número de marcadores de posición que el número de IDs en la lista, y luego la utilizamos en una cadena de consulta parametrizada para eliminar todos los registros coincidentes de la base de datos. Al pasar la lista de IDs como un arreglo de parámetros al método
ExecuteAsync
, Sqlite-net es capaz de coincidir correctamente los tipos de parámetros y realizar la operación de eliminación correctamente.