如何在sqlite-net中将列表作为参数传递

3
我正在构建一个Xamarin Forms应用程序,并使用Sqlite-net。 我想运行一个删除查询,删除所有具有列表中字段的记录,类似下面的内容:
//usersToDelete is a list of Objects each representing a user.
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);


这对我无效。它失败并显示错误信息“无法存储类型:System.Collections.Generic.List1[System.Int32]”。这是不是意味着我需要在代码中构建字符串,而不是使用“(?)”作为参数?或者有其他的方式可以提供这个参数吗?

1
我认为你需要自己构建字符串。请参考 https://dev59.com/Fm445IYBdhLWcg3wl7XW - Jason
1个回答

2

试试这个

var utd= usersToDelete.Select(i=> i.Id.ToString()).ToArray();
string ids=string.Join(",",utd);
string dbQuery = $"DELETE FROM Users WHERE Id IN ({ids})";

似乎没有办法仅使用参数来完成这个任务,但是这个方法可行。谢谢。 - Kikanye

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接