zoukankan      html  css  js  c++  java
  • C#, CSV,Generic, 泛型,导出

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.IO;
    using System.Threading;
    using System.Diagnostics;
    using System.Windows.Forms;

    namespace ConsoleApp317
    {
    class Program
    {
    static string csvFileName = DateTime.Now.ToString("yyyyMMddHHmmssffff") + ".csv";
    static string logFileName =".\"+ DateTime.Now.ToString("yyyyMMdd") + "log.txt";
    static Stopwatch stopWatch = new Stopwatch();
    static string exportMsg="";
    [STAThread]
    static void Main(string[] args)
    {
    using (AdventureWorks2017Entities context = new AdventureWorks2017Entities())
    {
    List<SalesOrderDetail> orderList = context.SalesOrderDetails.ToList();
    orderList.AddRange(orderList);
    orderList.AddRange(orderList);
    orderList.AddRange(orderList);
    orderList.AddRange(orderList);
    ExportByCSV<SalesOrderDetail>(orderList);
    }

    MessageBox.Show(exportMsg);

    Console.ReadLine();
    }

    static void ExportByCSV<T>(List<T> dataList)
    {
    StringBuilder exportBuilder = new StringBuilder();
    if (dataList==null && !dataList.Any())
    {
    return;
    }

    using (SaveFileDialog sfd = new SaveFileDialog())
    {
    sfd.FileName = csvFileName;
    sfd.Filter = "Csv Files|*.csv|All Files|*.*";

    if(sfd.ShowDialog()==DialogResult.OK)
    {
    stopWatch.Start();
    var firstRowData = dataList.FirstOrDefault();
    var properties = firstRowData.GetType().GetProperties().Where(x => !x.GetMethod.IsVirtual).ToList();
    exportBuilder.Append(string.Join(",", properties.Select(x => x.Name))+Environment.NewLine);
    foreach (var dl in dataList)
    {
    for (int i = 0; i < properties.Count() - 1; i++)
    {
    var prop = properties[i];
    exportBuilder.Append(prop.GetValue(dl) + ",");
    }
    exportBuilder.Append(properties[properties.Count - 1].GetValue(dl) + Environment.NewLine);
    }

    using (StreamWriter writer = new StreamWriter(sfd.FileName))
    {
    writer.WriteLine(exportBuilder.ToString());
    }

    stopWatch.Stop();
    exportMsg = $"There are {dataList.Count} rows data and cost {stopWatch.ElapsedMilliseconds} milliseconds";
    File.AppendAllText(logFileName, exportMsg+Environment.NewLine);
    }
    }
    }
    }
    }

  • 相关阅读:
    new 做了什么
    create-react-app+react-app-rewired引入antd实践
    实战build-react(二)-------引入Ant Design(增加)
    package.json文件
    读书多些会怎样
    关于学历
    QDialog弹出一个窗口,改变窗口大小
    #include <thread>
    #include <memory>
    #include <map>
  • 原文地址:https://www.cnblogs.com/Fred1987/p/10263602.html
Copyright © 2011-2022 走看看