2011-10-07 80 views
4

我想在批次集中插入記錄。例如,假設我有10,000條記錄要插入。我想分批插入500或1,000。我怎樣才能動態地做到這一點?那就是......拿第一個500或1,000個插入它們,拿下另一個插入它們,等等。在我的例子中,10,000的集合由通用列表組成,所以我想相應地插入或分割這個列表。有沒有辦法批量插入使用LINQ到SQL

10,000的計數不會是一個靜態計數。可能會更少或更多。只想分批插入500或1,000。

+0

爲什麼你不能,你只是用InsertOnSubmit,當你想蝙蝠,你只需按提交變更 –

+1

@SarawutPositwinyu:您可以* *做到這一點,但是這將是非常低效的。 – mellamokb

+0

@mellamokb我從來不知道這一點,感謝分享。 –

回答

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. 

顯然,這可以在一個循環中通過增加跳過量,而不是創建每個部分獨立變量來實現 - 我只是展示了這個想法。

而且您可能會發現這些鏈接有用:

1

你可以循環遍歷你的10,000列表並將它們放在一個輔助「插入」列表中,該列表將保存你的500或1000.處理「插入」列表,然後插入下一個500或1000.重複,直到完成。

相關問題