我想在一组批次中插入记录。例如,假设我要插入10,000条记录。我想分批插入500或1,000个。我怎么能动态地这样做?那就是......先插入500或1,000,然后插入它们,然后插入它们,依此类推。在我的示例中,10,000的集合由通用列表组成,因此我想相应地插入或分割此列表。
10,000的计数不是静态计数。可能更少或更多。只想分批插入500或1,000个。
答案 0 :(得分:4)
使用Linq-to-Sql来执行INSERT
将不会有效,因为即使您批量发送它也会始终将它们作为单独的INSERT
语句运行。您可以尝试使用库或第三方代码来发送批次:http://devio.wordpress.com/2011/08/05/batch-insert-using-linq-to-sql/。
就拆分列表而言,您可以执行以下操作:
var first = myList.Take(500);
var second = myList.Skip(500).Take(500);
var third = myList.Skip(1000).Take(500);
// etc.
显然,这可以通过增加Skip量而不是为每个部分创建一个单独的变量来循环完成 - 我只是在展示这个想法。
您也可以找到这些链接:
答案 1 :(得分:1)
你可以遍历你的10,000个列表并将它们放在一个二级“插入”列表中,该列表将保存你的500或1000.处理“插入”列表,然后插入下一个500或1000.重复直到你完成。