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);
}
}
}
}
}

C#, CSV,Generic, 泛型,导出的更多相关文章

  1. MySql csv文件导入导出

    一.导出到csv(本地导出) 通过mysql客户端shell连接到服务器,选择使用的数据库,输入sql代码: select * from test_info into outfile '/tmp/te ...

  2. CSV文件导入导出MySQL

    使用SQLyog 工具导入文件数据到MySQL: Excel文件导入导出: 需要驱动:Microsoft Office 2007驱动 导入需要注意的问题:1.Excel里数值列,默认导入会变成浮点型. ...

  3. Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解

    1.简介 本文主要给大家介绍了关于Laravel 5用Laravel Excel实现Excel/CSV文件导入导出的相关内容,下面话不多说了,来一起看看详细的介绍吧. Laravel Excel 在 ...

  4. thinkphp5 csv格式导入导出(多数据处理)

    关于csv文件格式的导出导入个人见解 先上代码: <?php namespace think; class Csv { /** * 导出csv文件 * @param $list 数据源 * @p ...

  5. 完整代码:安卓小软件“CSV联系人导入导出工具”

    完整代码:安卓小软件"CSV联系人导入导出工具" 开发了一个安卓小软件"CSV联系人导入导出工具",欢迎测试.本软件可以帮你快速备份和恢复联系人,不用担心号码遗 ...

  6. 开发了一个安卓小软件“CSV联系人导入导出工具”,欢迎测试

    开发了一个安卓小软件"CSV联系人导入导出工具",欢迎测试.本软件可以帮你快速备份和恢复联系人,不用担心号码遗失,软件操作简单,使用方便. 下载地址: 百度网盘:https://p ...

  7. CSV的导入导出

    using System; using System.Data; using System.IO; namespace COMMON { public class CSVhelperClass { / ...

  8. MongoDB csv文件导入导出

    1.导出到csv文件: 2.从csv导入: 数据经过csv导出导入,有一个非常隐蔽的问题,编写代码时需要注意: 先导入一条数据: 其中Price是double类型: 然后我把该条记录导出到Demo.c ...

  9. JAVA入门——Generic/泛型

    在台科大的第二次JAVA作业,老师课上讲的内容是泛型. 泛型(generic),泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数.这种参数类型可以 ...

  10. SSIS 中将csv 文件批量导出到excel 文件,并设置excel 文件中某些列的data column format 为Text

    csv 文件是文本文件类型,但是打开csv 文件后(默认使用本地已经安装的excel 来打开excel 文件),默认显示出来的是general 类型(column data format)的数据, 这 ...

随机推荐

  1. C# read dll config

    public static SqlConnection GetSqlConnection() { Configuration myDllConfig = ConfigurationManager.Op ...

  2. centOS服务器添加电脑ssh key以支持远程登陆

    1,生成电脑的密钥对(在powershell或cmd命令行中) ssh-keygen -t rsa -C "自己的邮箱" 2.打开刚刚生成的电脑公钥(~即代表用户主目录,/则代表根 ...

  3. jQuery之概念以及基本使用

    1. jQuery的概述 1.1 jQuery的概念 jQuery是一个快速.简洁的JavaScript库,其设计的宗旨是“Write Less,Do More” jQuery主要是封装了JavaSc ...

  4. JS是解释型还是编译型语言?

    解释型和编译型语言 解释型语言 解释型语言是对代码进行一句一句的直接运行,在程序运行期间,使用解释器动态将代码解释为机器码,再运行. 编译型语言 编译型语言是需要使用编译器先对代码进行编译为机器码,再 ...

  5. 2019年上半年收集到的人工智能AutoML干货文章

    2019年上半年收集到的人工智能AutoML干货文章 自动机器学习简述(AutoML) 谷歌将AutoML应用于Transformer架构,翻译结果飙升,已开源 IBM推出AutoAI,让企业人工智能 ...

  6. Android框架Volley使用:Json请求实现

    首先我们在项目中导入这个框架: implementation 'com.mcxiaoke.volley:library:1.0.19' 在AndroidManifest文件当中添加网络权限: < ...

  7. Android 布局测试

    wrap_content <Button android:id="@+id/button1" android:layout_width="wrap_content& ...

  8. mac 下删除 python 2.7

    删除 mac os 自带的 python 2.7, 以方便安装 python 3 的虚拟环境. 删除 Python 2.7 framework   sudo rm -rf /Library/Frame ...

  9. python爬虫中文乱码问题(request方式爬取)

    https://blog.csdn.net/guoxinian/article/details/83047746   req = requests.get(url)返回的是类对象 其包括的属性有: r ...

  10. Python—下载安装与使用

    安装依赖包 首先安装gcc编译器,编译时需要使用gcc.gcc有些系统版本已经默认安装,通过  gcc --version  查看,没安装的先安装 [root@localhost ~]# yum -y ...