从列“在”范围 - 简单数据中的表中删除

本文关键字:数据 删除 简单 范围 从列 | 更新日期: 2023-09-27 18:33:07

我正在使用Simple.Data作为我的Micro-ORM,我想实现一些可能或不可能实现的目标。我想对其中一列与变量列表匹配的表进行删除,因此实际上 SQL 将是这样的:

DELETE FROM [Albums] WHERE Genre IN ("Rock", "Pop")

这可能吗?我尝试了一些事情,例如:

db.Albums.DeleteByGenre(new[] { "Rock", "Pop" });
db.Albums.DeleteAll(db.Albums.Genre == new[] { "Rock", "Pop" });
var genres = new List<string> { "Rock", "Pop" }
db.Albums.DeleteAll(db.Albums.Genre == genres);

哪个不运行,因为我在运行SQL配置文件时看不到生成的查询。开始认为唯一的选择是逐一循环调用DeleteBy的流派集合?

编辑:

我遇到的问题不是简单数据问题。以上将起作用,我使用了:

var genreList = new List<string> { "Rock", "Pop" };
db.Albums.DeleteByGenre(genreList);

或者,您可以使用:

db.Albums.DeleteAll(db.Albums.Genre == genreList);

我个人更喜欢第一种选择:)

从列“在”范围 - 简单数据中的表中删除

我还没有测试过它,但你可以像这样使用 Array.contains 方法:

string[] genresToDelete = new[] { "Rock", "Pop" };
db.Albums.DeleteAll(genresToDelete.Contains(db.Albums.Genre));

我不是 100% 确定创建语句的智能程度,但我强烈建议您在语句之前定义数组并使用它(而不是为表的每个记录定义它)。另外,我认为这样更具可读性:)