2017-08-24 89 views
-1

我有一对夫妇在C#中的SQL语句,我需要添加一个范围,使我的SQL语句类似于:SQL WHERE IN子句中包含具有ID的对象列表?

DELETE FROM TABLE WHERE SOMETHING IN (value1, value2, value3 , ...); 

我有一个有ID的对象,我想代替名单价值。对于每一个陈述,我会怎么做呢?

我有三个班的12,2的ID字符串,5:

public class inventoryItems 
{ 
    public string id { get; set; } 
} 
+2

更多的信息将是有帮助的 - 你使用的ORM?如果是这样,哪一个? – combatc2

+0

尝试用ID创建一个字符串。像“'',''...” – TheVillageIdiot

回答

0

如果您在使用直ADO.NET代码,你可以做类似的事情来生成T-SQL :

class Program 
{ 
    public class InventoryItems 
    { 
     public string Id { get; set; } 
    } 

    static void Main(string[] args) 
    { 
     var items = new[] 
     { 
      new InventoryItems {Id = "One"}, 
      new InventoryItems {Id = "Two"}, 
      new InventoryItems {Id = "Three"}, 
     }; 

     var idsToDelete = string.Join(",", items.Select(x => "'" + x.Id + "'")); 
     var deleteStatement = $"DELETE FROM InventoryItem WHERE Id IN ({idsToDelete})"; 

     Console.WriteLine($"TSQL - {deleteStatement}"); 
     Console.ReadLine(); 
    } 
}