2013-07-29 52 views

回答

1

隨着MoreLINQ(可從的NuGet)可以拆分訂單成批次,然後從批建新的文件:

XDocument xdoc = XDocument.Load("orders.xml"); 
int batchSize = 2; 
int batchIndex = 0; 

foreach(var orders in xdoc.Descendants("order").Batch(batchSize)) 
{ 
    XDocument doc = new XDocument(new XElement("orders", orders)); 
    doc.Save(String.Format("orders-{0}.xml", batchIndex++)); 
} 

這將創建一個新的文件,每份將包含batchSize訂單內(當然,最後一個可以包含更少的訂單)。訂單將被放置在<orders>根標籤下。


你甚至可以做所有的單個查詢

xdoc.Descendants("order").Batch(batchSize) 
    .Select((orders, index) => new { orders, index }) 
    .ForEach(batch => { 
     XDocument doc = new XDocument(new XElement("orders", batch.orders)); 
     doc.Save(String.Format("orders-{0}.xml", batch.index)); 
    }); 
+0

批未在system.collection.Generic.Ienumerable – user1453017

+0

支持@ user1453017有你下載MoreLinq包,其中包括使用'MoreLinq;'命名空間參考你的文件? –

+0

'批處理'相當容易實現 - 就像你自己在http://stackoverflow.com/a/13731823/168719 :)中演示的那樣 - 因此添加一個單獨的庫看起來像是在這裏矯枉過正。沒有跡象表明OP需要其他任何東西 –