Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
复制一个;删除不在";通过LINQ/亚音速的SQL语句_Linq_Subsonic_Subsonic3 - Fatal编程技术网

复制一个;删除不在";通过LINQ/亚音速的SQL语句

复制一个;删除不在";通过LINQ/亚音速的SQL语句,linq,subsonic,subsonic3,Linq,Subsonic,Subsonic3,我想做一些类似于从表中删除的事情,其中ID不在(1,2,3)中,PAGEID=9 我有一个ID列表,但如果需要可以更改。我不知道如何为LINQ解析器获得布尔结果 我想这就是亚音速的期望 Delete(content=>content.PageID==ID).Execute() 我不知道怎么做不在声明中。我尝试了List.Contains方法,但有些地方不太正确 更新:另一种选择是: var items = TABLE.Find(x => x.PageID == ID)' foreach(v

我想做一些类似于从表中删除的事情,其中ID不在(1,2,3)中,PAGEID=9

我有一个ID列表,但如果需要可以更改。我不知道如何为LINQ解析器获得布尔结果

我想这就是亚音速的期望

Delete(content=>content.PageID==ID).Execute()

我不知道怎么做不在声明中。我尝试了List.Contains方法,但有些地方不太正确

更新:另一种选择是:

var items = TABLE.Find(x => x.PageID == ID)'
foreach(var item in items)
{
   item.Delete();
}
这会对数据库产生更大的影响,但请尝试。包含:

db.Delete(content => content.PageID.Contains(<Array containing ID's>).Execute();
db.Delete(content=>content.PageID.Contains(当你说“不太正确的东西”时)你到底是什么意思

我希望能写:

List<int> excluded = new List<int> { 1, 2, 3 };
db.Delete(content => !excluded.Contains(content.PageID)).Execute();
List excluded=新列表{1,2,3};
db.Delete(content=>!excluded.Contains(content.PageID)).Execute();

请注意,您需要对排除的值数组调用
Contains
,而不是对候选值调用。换句话说,您不是说“项不在集合中”,而是说“集合不包含项”。

我发现这是可行的,但不是通过LINQ

var table = new WebPageContentTable(_db.DataProvider);
var g = new SubSonic.Query.Delete<WebPageContent(_db.DataProvider)
            .From(table)
            .Where(table.ID)
            .NotIn(usedID)
            .Execute();
我认为这一点只需对数据库进行一次点击即可实现,但我在QueryVisitor::Visiturary中引发了一个异常

WebPageContent.Delete(x => !usedID.Any(e => e == x.ID));

当您尝试它时发生了什么?它可能不是一个“bug”,而是一个不受支持的查询类型。这不会让我感到惊讶。
WebPageContent.Delete(x => !usedID.Any(e => e == x.ID));