我有一个雇员班,如下所示
public class Employee
{
public int EmployeeID { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public DateTime DOB { get; set; }
}我使用实体框架从数据库中检索员工数据,如下所示
using (var dbContext = new EmployeeEntities())
{
List<Employee> employeeList = new List<Employee>();
employeeList = dbContext.employee.Select(x => new Employee
{
EmployeeID = x.EmployeeID,
Name = x.Name,
Age = x.Age,
DOB = x.DOB
}).ToList();
}然后序列化列表并将其保存为XML文件。
if (employeeList.Count > 0)
{
XmlSerializer mySerializer = new XmlSerializer(typeof(List<Employee>));
TextWriter myWriter = new StreamWriter("D:\\Employee.xml", true);
mySerializer.Serialize(myWriter, employeeList);
myWriter.Close();
}这里我的要求是根据我指定的页面大小将结果集保存到多个XML文件中。例如,如果Employee表包含536行,而我的页面大小为100,则应该将其保存在6个XML文件中,分别包含100、100、100、100、100和36行。如何使用实体框架实现这一目标??
发布于 2018-03-16 12:34:59
您可以使用.Skip()和.Take()来完成这个任务。
.Take()将从列表中获取所定义的项数,如果有较少的项,则将全部取走。.Skip()将跳过定义的金额。
通过拥有tmp变量,您可以关闭employeeList并保存每个文件。
if (employeeList.Count > 0)
{
int take = 100;
int i = 0;
while (employeeList.Any())
{
i++;
var tmp = employeeList.Take(take)ToList();
employeeList = employeeList.Skip(take).ToList();
XmlSerializer mySerializer = new XmlSerializer(typeof(List<Employee>));
TextWriter myWriter = new StreamWriter("D:\\Employee"+i+".xml", true);
mySerializer.Serialize(myWriter, tmp);
myWriter.Close();
}
}https://stackoverflow.com/questions/49320732
复制相似问题