从表中删除列“在”范围内 - Simple.Data

时间:2014-12-03 13:36:18

标签: c# sql orm simple.data

我正在使用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逐个调用的类型集合?

编辑:

我遇到的问题不是Simple.Data问题。以上都可行,我用过:

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

你可以使用:

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

我个人更喜欢第一个选项:)

1 个答案:

答案 0 :(得分:1)

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

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

我并不是100%确定语句的创建有多聪明,但我强烈建议您在语句之前定义数组并使用它(而不是为表的每条记录定义它)。另外,我认为它更具可读性:)