目前,我正在开发一个控制台应用程序,它执行以下操作:
执行SQL Server存储过程以获取手机号码等数据。
使用以下catch创建一个或多个XML文件 - 每个文件最多只能有100个元素。
想象一下下面的内容:
我有一个Car
类,Car
类作为以下属性:
Make, Year, Model, Color, Number Of Axles
然后我有一个
List<Car> myCars = new List<Car>();
Car
类现在由存储过程填充,在控制台应用程序代码中我使用默认构造函数,填充列表等...
我发现myCars.Count = 200
。我想要两个XML文件,如下所示:
<!--First xml file-->
<myCars>
<!-- first set of 100 cars-->
</myCars>
然后是第二个文件
<!-- Second xml file-->
<myCars>
<!-- second set of 100 cars from the myCars list -->
</myCars>
我正在使用XDocument
和Linq to XML技术。请帮忙!
答案 0 :(得分:2)
只需使用XmlSerializer来创建汽车的xml。选择批量为100为该集创建新的xml文件。
这样的事情:
XmlSerializer ser = new XmlSerializer(typeof(List<Car>));
int carsPerFile = 100;
int fileIndex = 1;
for(int i=0; i<myCars.Count; )
{
var cars = myCars.Skip(i).Take(carsPerFile);
using (var text = XmlWriter.Create(string.Contact("myCars_",fileIndex++,".xml"))
{
ser.Serialize(text, cars.ToList());
}
i += carsPerFile;
}
答案 1 :(得分:1)
您可以使用
从集合创建分区11 10
然后将每个分区序列化为文件
int partitionSize = 100;
var partitions = collection
.Select( (e,i) => new { Partition = i / partitionSize, Element = e } )
.ToLookup( e => e.Partition, e => e.Element );
答案 2 :(得分:0)
List<Car> firstHundred = myCars.Take(100); // first 100
List<Car> secondHundred = myCars.Skip(100).Take(100) // 100-200
然后将这两个列表序列化为不同的xml文件。