C#
Leckun
这个作者很懒,什么都没留下…
展开
-
在c#中使用NPOI结合Magicodes.IE.excel将xlsx文件内存中转换为xls文件
作为导出excel的组件,但只支持新格式xlsx,有需求要导出旧格式xls文件,因此只能考虑转换的方案,经多种方案尝试和查找相关解决方案,在一份使用NPOI转换的xlsx到xls的文章到找到相关代码,但代码中只支持XSSFWorkbook转换以HSSFWorkbook,扩展后。通过这种一行行转换的方案,理论上也可以将旧格式xls转换为新格式xlsx。同时原来代码不能处理单元格格式,这里修复后加入。原创 2023-10-09 09:21:17 · 553 阅读 · 0 评论 -
C# 拼接List中各对象里的字符串 增加ConvertAll和Select的区别
有不少都用到了拼接字符串,我之前用循环拼字符串,有时候写起来很麻烦。现在查到这样一种写法,大家可以保留备用:QueryUsers = String.Join(“,”, query.Users.ConvertAll(u => u.Code).ToArray())String.Join(string separator, params string[] value);第一个参数是连接符,而且只连接,不会在头尾加出多余的字符。第二个参数是一个string类型的数组。这里又先调用List的Conv转载 2022-04-25 16:31:44 · 1637 阅读 · 0 评论 -
使用SqlBulkCopy批量插入/更新数据
在开发中遇到了一张表的数据因为只做了同步插入而没有做同步更新的操作,导致了百万数据不准确。面对大量数据需要更新,传统的循环逐条插入以及拼接1000条数据插入都比较耗时,网上有博主做出了相关测试。根据以上场景,新建控制台程序。config添加数据库连接配置,sqlHelper连接更新数据源,sqlBulkCopyHelper连接更新目标库。创建sqlHelper类using System;using System.Collections.Generic;using System.Data;usin转载 2021-04-13 11:42:24 · 2324 阅读 · 0 评论 -
通过.NET反射动态调用SetValue方法给属性PropertyInfo动态类型赋值
注意:若不动态转换属性的值,简单调用SetValue方法赋值经常出错!特别是日期类型、带符号的数字类型等。解决方案:通过TypeDescriptor.GetConverter方法获取对应数值类型的转换器,然后调用ConvertFromString方法进行转换。/// <summary>/// 通过.NET反射动态调用SetValue方法给属性PropertyInfo赋值/// </summary>/// <param name="obj">对象实例</p转载 2021-04-06 10:17:24 · 2332 阅读 · 0 评论 -
C#中如何安全的关闭串口
VC#中如果涉及到多线程,特别是大量的数据处理和界面更新时,如果简单强制的关闭串口,很可能会造成串口死掉。串口无法关闭的原因是:要关闭串口的时候,有其它线程还在读取数据或者更新界面。关键是:在准备关闭串口的时候,看看是否在接收和处理数据,如果是就等它处理完为止;在事件处理的最前面,判断如果是准备关闭串口的bool类型值,就不再进入数据接收和处理。using System;using System.Collections.Generic;using System.Text;using System转载 2020-07-28 16:49:25 · 7109 阅读 · 0 评论 -
DataTable转List<dynamic>
DataTable转List最近做的一个项目,MVC+Ado.net。没有ORM很不习惯。找到一个办法,DataTable转List,这样代码就比较好看一点,主要是为了配合 Razor好用点。本来想自己写一个,结果发现网上已经有人写好了。直接拿来用吧。来源:http://www.oschina.net/code/snippet_1011399_54272有过滤字段,和反转过转载 2018-01-04 18:09:31 · 3858 阅读 · 0 评论 -
C# IndexOf的小坑一个
这个坑其实一般遇不上,因为IndexOf一般情况下都会带上字符参数,找不到返回-1,找到了返回>=0的位置。但当IndexOf的参数为空是,返回值居然是0,这个一般情况出现在IndexOf的参数是传进来的参数时,可能会出现空字符串,这时需要先排除这种情况,否则可能有错误的结果。原创 2018-01-05 11:34:43 · 4244 阅读 · 0 评论 -
c# model对象转换为url的参数形式
using System.Web;using System.Reflection;/// <summary>/// Model对象转换为uri网址参数形式/// </summary>/// <param name="obj">Model对象</param>/// <param name="url">前部分网址&原创 2018-02-11 08:49:45 · 4380 阅读 · 0 评论 -
c# 数组设置重复的默认值
c# 数组设置重复的默认值byte[] bBuf=new byte[1024102450];默认值全部都是0xf,怎样才能得到想要的值了?byte[] bBuf = Enumerable.Repeat((byte)0xff, 1024 * 1024 * 50).ToArray();这样就把默认值改为0xff了.希望可以帮到大家http://igoro.com/archive/7-tric...转载 2018-09-19 09:46:31 · 3581 阅读 · 0 评论 -
GetProperty反射赋值SetValue报错:类型“System.Byte”的对象无法转换为类型“System.Nullable`1[System.Int32]”。
在数据库读取DataTable进行实体转换的时候报错,仔细看数据库的类型是tinyint,null,而实体类中的类型是int?,这时候就会报错原来出错的代码是这样的: private static void GetPropertyInfo<T>(DataTable table, Type type, int i, T item) where T : class ...原创 2019-01-11 18:01:53 · 9206 阅读 · 0 评论 -
Winform动态增加ComboBox后SelectedValue无效的问题
窗体上动态创建ComboBox控件,并且打算初始化时自动选定值为"2“的项,代码如下: ComboBox comboBoxCarPlateColor = new ComboBox(); List> listCarPlateColor = new List>(); listCarPlateColor.Add(new K原创 2017-06-16 14:35:16 · 5914 阅读 · 4 评论 -
js和css文件自动在后缀处添加版本号(.NET)
基本用法为防止浏览器缓存,一般会在js和css文件后添加版本号,但每次手工改将会很麻烦,因此可以考虑自行将文件修改时间作为版本号,并且自动附加到页面上。先写一个获取文件名的公共方法:public string GetFileTimeStampString(string filePath){ FileInfo fi = new FileInfo(Server.MapPath(file原创 2017-11-29 14:20:19 · 9784 阅读 · 2 评论 -
地球坐标系 (WGS-84) 到火星坐标系 (GCJ-02)百度坐标系 (BD-09) 的转换算法
地球坐标系 (WGS-84) 到火星坐标系 (GCJ-02) 的转换算法WGS-84 到 GCJ-02 的转换(即 GPS 加偏)算法是一个普通青年轻易无法接触到的“公开”的秘密。这个算法的代码在互联网上是公开的,详情请使用 Google 搜索 "wgtochina_lb" 。整理后的算法代码请参考 https://on4wp7.codeplex.c转载 2014-03-27 00:54:20 · 11959 阅读 · 0 评论 -
VS 2012 Dotfuscator and Analytics 'j8' 类型初始值设定项引发异常 解决方法
VS2012当选择[PreEmptive Dotfuscator and Analytics] 出现如下错误时: The type initializer for ‘j8’ threw anexception.'j8' 类型初始值设定项引发异常解决方案:1、 打开注册叫编辑器2、 新建注册表键[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6转载 2013-12-05 11:20:27 · 4318 阅读 · 4 评论 -
C# interface 接口理解
针对接口编程能帮助达到面向对象开发和设计中"低耦合"的要求.举个例子:某公司有一台特殊打印机,还可以使用一年,一年后可能换为另一种打印机,这两种打印机都特殊而贵.所以现在的程序希望换了打印机后也少量修改就可用.方法:1,定义一个打印机接口.2,定义打印机类A,B,分别实现此接口.3,定义一个工厂类,在类中可选择返回由A实现的接口,或者由B实现的接口.4,在程序中使用打印机时转载 2015-08-24 18:14:47 · 477 阅读 · 0 评论 -
数据集 DataRow.RowState 属性深入分析
1. RowState 介绍RowState 是 DataRow 很重要的一个属性, 表示 DataRow 当前的状态. RowState 有 Added, Modified, Unchanged, Deleted, Detached 几种, 分别表示 DataRow 被添加, 修改, 无变化, 删除, 从表中脱离. 在调用一些方法或者进行某些操作之后, 这些状态可以相互转化.Da转载 2016-02-23 16:07:14 · 515 阅读 · 0 评论 -
尚未在 Web 服务器上注册ASP.NET 4.5。安装VS2015后的问题
安装体验vs2015 ,,但是机器上同时安装有、vs2012、vs2013 。安装完成后,打开vs2012 的项目,有如下提示: 后来到老外的网站http://stackoverflow.com 上面找到了解决方法,原来这是微软的一个bug,不过已经有针对的补丁包。网址如下:http://blogs.msdn.com/b/webdev/archive/2转载 2016-04-12 14:21:43 · 3627 阅读 · 0 评论 -
升级到 .net WebApi 2后提示错误的解决方案
错误1:'CommonServices.Areas.HelpPage.XmlDocumentationProvider' does not implement interface member 'System.Web.Http.Description.IDocumentationProvider.GetDocumentation(System.Web.Http.Controllers原创 2016-04-19 14:47:04 · 3680 阅读 · 0 评论 -
VS2012 Nuget 安装 AutoMapper时报错的解决方法
VS2012 在.net 4.0下安装Autodapper时,会报以下错误:“AutoMapper”已拥有为“Standard.Library”定义的依赖项。经查应该是Nuget版本(VS2012的2.83版本)较低引起的,不支持Standard.Library框架。解决方法有两个:方式一NuGet 2.12支持AutoMapper 5.0.1 NuGet 包使用的原创 2016-11-02 16:12:08 · 5247 阅读 · 0 评论 -
System.Threading.Timer定时器停止运行(失效)问题解决方法
一、现象在一个WebAPI项目中某个方法Tools()里使用定时器var timer = new System.Threading.Timer((unused) => { Console.WriteLine("1"); }, null, 0, 1000);//1秒一次部署到IIS后,发现定时器老是失效,没有原创 2017-03-29 14:53:03 · 17776 阅读 · 0 评论 -
获得WebAPI原始POST请求BODY的JSON内容
在controller的action里写如下代码:string content = Request.Content.ReadAsStringAsync().Result;但是这段代码获取的content却是空的,搞了半天没明白,后来在一个国外的论坛找到了原因。原因是这样的,当你的Action参数存在[FromBody]等读取内容的方法时,会被[FromBody]“吃掉”。说得有些生动,原创 2017-09-21 09:17:12 · 19161 阅读 · 0 评论 -
WebAPI HelpPage出现Failed to generate the sample for media type 'application/x-www-form-urlencoded'. 错
WebApi参数页面的示例里,出现Failed to generate the sample for media type 'application/x-www-form-urlencoded'. Cannot use formatter 'JQueryMvcFormUrlEncodedFormatter' to write type 'Vehicle'.调试查了一下原因,是因为Web原创 2017-10-16 10:15:51 · 2645 阅读 · 0 评论 -
dotfuscator 在混淆.Net Framework 4.0以上版本的时候报错的解决方法
在混淆的时候报错了,错误描述大致如下:Could not find a compatible version of ildasm to run on assembly C:\xxx.dll This assembly was originally built with .NET Framework v4.0.30319要混淆不同的.Net Framework版本需要在Setti原创 2013-12-05 14:50:55 · 20372 阅读 · 10 评论