C#学习
文章平均质量分 57
机械键盘侠
越学习越不懂
展开
-
C#使用模板文件批量导出word文档
需求背景 因为疫情爆发,进入一级响应状态,公安部门进行了严格出入境管理,需要对每个出入境的人进行状态跟踪。 疫情专班会将出入境的每个人员汇总在一张Excel表中,如下图所示: 每一行对应一个人员信息,一个人员信息需要生成一个协查函,需要将人员信息填入到固定格式的协查函中,协查函的格式如下图所示:功能实现 功能实现分成两个部分,一是从Excel读取数据,二是将读取的数据批量输出到Word文档。从Exc...原创 2021-12-18 09:59:29 · 1583 阅读 · 0 评论 -
PDA手持终端WinCE系统连接SqlServer数据库
引言:因项目需求需要通过使用PDA手持终端对条码进行数据采集,并将数据传输到SqlServer进行增删改查操作,一般来说,跟sqlserver的版本没有特别大的关系,我见过用05的、08的、我自己用的2014版本。PDA用的是基恩士的,我也见过用摩托罗拉的,感觉跟品牌应该关系不大,毕竟都是装WinCE系统的。开发环境用的VS2008.一、首先是安装VS2008,然后是升级到Service Pack 1,这些都可以在MSDN上下载,点击这里进入MSDN下载。然后就是PDA的初次安装指南说明书,照着...原创 2020-06-24 12:56:26 · 1470 阅读 · 0 评论 -
C#中事务的简单使用
在C#中开启事务的步骤一、调用SqlConnection对象的BeginTransaction()方法,创建一个SqlTransaction对象,标志事务开始。二、将创建的SqlTransaction对象分配给要执行的SqlCommand的Transaction属性。三、调用相应的方法执行SqlCommand命令。四、调用SqlTransaction的Commit()方法完成事...原创 2020-03-13 14:18:20 · 842 阅读 · 0 评论 -
C#中? 、?? 、?. 、??= 的用法和说明
一、可空类型修饰符< ? >引用类型能用空引用来表示一个表示一个不存在的值,但是值类型不能。例如:string str = null;int i = null;//编译报错为了使值类型也能使用可空类型,就可以用 " ? "来表示,表现形式为"T?"。例如:int i? //表示可空的整型DateTime time? //表示可空的时间二、空合并运算符&...原创 2019-11-01 08:51:33 · 8006 阅读 · 3 评论 -
C#利用反射实现动态加载程序集简单案例
反射可以不但用来读取元数据,还可以使用反射从编译时还不清楚的类型中动态创建程序集,此案例摘自C#高级编程。首先先创建一个控制台应用程序,然后添加一个类库,类库名称为CalculatorLib,如下图所示: CalculatorLib程序集中有两个方法,参数是x和y,一个方法返回两...原创 2019-06-18 10:09:09 · 836 阅读 · 0 评论 -
C# 中的 is 和 as 运算符 简单举例说明
假设有一个接口:IBankAccount;一个类SaverAccount,类SaverAccout继承自IBankAccount接口,如下图所示:public interface IBankAccount{ public interface IBankAccount { void PayIn(decimal amount); bool Wit...原创 2019-06-22 09:23:12 · 332 阅读 · 0 评论 -
C#中的修饰符及其说明
主要修饰符 修饰符 应用于 说明 public 所有类类型成员 任何代码均可以访问该项 protected 类型和内嵌类型的修饰符 只有派生的类型能访问该项 internal 所有类型或成员 只能在包含它的程序集中访问该项 private 类型和内嵌类型的所有成员 只能在它所属的类型中访问该项 protected i...原创 2019-06-22 08:41:32 · 172 阅读 · 0 评论 -
C# 6 的新特性
还是记录一下吧,好记性不如烂笔头。1、静态的 using 声明静态的 using 声明允许条用方法时候不适用类名。C# 5:using System;//etcConsole.WriteLine("Hello,World!");C# 6:using static System.Console;//etc.Writeline("Hello,World");...原创 2019-06-21 22:28:34 · 207 阅读 · 0 评论 -
C#中其他简单LINQ查询表达式的简单使用介绍
本文主要记录下其他简单LINQ表达式,因为比较简单,记录下以后方便回忆,本文也会持续更新。一些有用的LINQ扩展方法:LINQ表达式 作用 是否延迟查询 Range 生成指定范围内的整数的序列 Repeat 生成包含一个重复值的序列 Skip 跳过指定数量的元素,返回剩余元素 是 SkipWhile 跳过满足...原创 2019-06-12 10:37:28 · 500 阅读 · 0 评论 -
C# partial 部分类使用简单举例说明
partial 关键字允许把类、结构、方法或者接口放在多个文件中。一般情况下,某种类型的代码生成器生成了一个类的某部分,所以把这类放在多个文件中是有益的。假定要给类添加一些从工具中自动生成的内容。如果重新运行该工具,前面所做的修改就会丢失。partial 关键字有助于把类分开放在两个文件中,而对不由代码生成器定义的文件进行修改。partial 关键字的用法是:把Partial放在class...原创 2019-06-22 12:47:04 · 1081 阅读 · 0 评论 -
C#中 out、ref、params 修饰符使用方法
使用 out 关键字可以一个方法返回多个返回值。int i;string str;bool b;public void MyReturnMethod(out int a, out string b,out bool c){ a = 9; b = "Hello"; c = false;}params 关键字可以把可变数量的参数(相同类型)作为单个...原创 2019-06-22 14:13:13 · 351 阅读 · 1 评论 -
深入了解C#反射中Assembly.Load()、Assembly.LoadFrom()、Assembly.LoadF ile ()方法
本文转自:https://www.cnblogs.com/zagelover/articles/2726034.htmlAssembly.Load()Load()方法接收一个String或AssemblyName类型作为参数,这个参数实际上是需要加载的程序集的强名称(名称,版本,语言,公钥标记)。例如.NET 2.0中的FileIOPermission类,它的强名称是:System....转载 2019-06-18 11:39:03 · 20578 阅读 · 0 评论 -
C#从构造函数中调用其他构造函数
有时,在一个类中有几个构造函数,以容纳某些可选参数,这些构造函数包含一些共同的代码。例如,如下情况:Class Car{ private string _description; private int _nWheels; public Car(string description,unit nWheels) { _descri...原创 2019-06-22 18:14:42 · 9182 阅读 · 1 评论 -
C#中使用NPIO实现导入导出Excel简单操作
本文介绍了在Winform中使用NPOI(PIO项目下的.Net组件)来操作Excel文件,而无需安装Office。要实现的效果是这样的:1、导出Excel:根据指定datatable,弹出导出窗口,用户自定义路径、导出名,然后导出。2、导入Excel:弹出导入窗口,用户自定义导入Excel文件,导入到datatable中。首先,需要在NuGet程序包中搜索并下载NPOI组件...原创 2019-06-24 13:27:53 · 1940 阅读 · 0 评论 -
C#中采用OLEDB方式来读取EXCEL文件
使用OLEDB来读取EXCEL的原因很简单,只是因为我感觉代码量不多。代码已经本地测试通过。public class OlEDBHelp{ public DataSet ExcelToDataSet(string path,string tableName = "table1") { DataSet ds = new DataSe...原创 2019-06-24 16:53:22 · 1767 阅读 · 0 评论 -
C#中@符号的作用
一、忽略转义字符string fileName = "D:\\文本文件\\text.txt";string fileName = @"D:\文本文件\text.txt";二、让字符串跨行stringstrSQL ="SELECT * FROM HumanResources.Employee AS e"+" INNER JOIN Person.Conta...转载 2019-06-28 15:33:16 · 262 阅读 · 0 评论 -
C#中使用SqlBulk百万级数据秒级插入
本文转自这篇文章,提供了一种较快的数据插入的思路,转过来做个记录。#region static void Insert(){ Console.WriteLine("使用Bulk插入的实现方式"); Stopwatch sw = new Stopwatch(); DataTable dt = GetTableSchema(); using...转载 2019-07-01 08:12:02 · 3294 阅读 · 0 评论 -
C#中利用Expression表达式树进行多个Lambda表达式合并
在上一文中介绍使用了合并两个Lambda表达式,能两个就能多个,代码如下图所示: public static class ExpressionHelp { private static Expression<T> Combine<T>(this Expression<T> first, Expression<T>...原创 2019-06-17 14:45:52 · 8148 阅读 · 1 评论 -
C#中IEnumerable.OfType()方法的简单使用
背景介绍OfType的定义十分简单:IEnumerable.OfType(TResult),如其定义,其中TRsult为所要过滤的类型。由于非泛型集合一律以Object类型存储对象,因此一个非泛型集合可能存储了各种类型,而OfType()方法可以轻松的对指定的类型进行过滤筛选。代码如下: static void Main(string[] args) {...原创 2019-06-04 15:35:09 · 1769 阅读 · 0 评论 -
C#中IEnumerable<T>.Aggregate()的简单使用
背景介绍IEnumerable<T>.Aggregate()在LINQ使用中好像很不起眼,但我个人认为这是十分实用并且强大的,支持自定义聚合操作,方法定义中的Func包含3个TSource参数,分别为下一个执行聚合的元素,当前聚合的元素,返回的元素。代码如下: static void Main(string[] args) { ...原创 2019-06-04 14:39:36 · 6600 阅读 · 1 评论 -
[深入学习C#]LINQ查询表达式详解(2)——查询表达式的转换
转载自诗人江湖老,原文地址 C#在执行LINQ查询表达式的时候,并不会指定其执行语义,而是将查询表达式转换为遵循查询表达式模式的方法的调用。具体而言,查询表达式将转换为以下名称的调用:Where、Select、SelectMany、Join、GroupJoin、OrderBy、OrderByDescending、ThenBy、ThenByDescending、GroupBy、Cast等等。 ...转载 2019-01-17 11:21:33 · 311 阅读 · 0 评论 -
[深入学习C#]匿名函数、委托和Lambda表达式
转载自诗人江湖老,原文地址 匿名函数(Anonymous Function)是表示“内联”方法定义的表达式。匿名函数本身及其内部没有值或者类型,但是可以转换为兼容的委托或者表达式树类型(了解详情)。匿名函数转换的计算取决于转换的目标类型:如果是委托类型,则转换计算为引用匿名函数所定义的方法的委托;如果是表达式树类型,则转换将计算以对象结构形式表示方法结构的表达式树。 匿名函数有两种语法风...转载 2019-01-17 11:26:32 · 161 阅读 · 0 评论 -
C#实现 Linq 序列的Distinct—— IEnumerable.Distinct()——IEqualityComparer
转载自诗人江湖老,原文地址 在C#中使用List或者Collection的时候,我们经常需要使用到Distinct操作,但是微软默认提供的Distinct重载方法并不能满足我们的需求。这时候,我们就需要自己动手做一番工作了。Distinct方法的重载 Linq的Distinct的方法有如下一个重载版本:public static IEnumerable<TSource> D...转载 2019-01-17 14:24:21 · 1002 阅读 · 0 评论 -
[深入学习C#]利用反射给对象赋值
[转载自诗人江湖老,原文地址](https://blog.csdn.net/honantic/article/details/48263313)C#中利用反射能够获取对象的属性信息,也可以利用反射给对象赋值。我们如果想利用凡是给一个对象属性赋值可以通过PropertyInfo.SetValue()方式进行赋值,但要注意值的类型要与属性保持一致。 假设我们有如下一个结构:struct ...转载 2019-01-17 14:36:31 · 2029 阅读 · 0 评论 -
用委托来实现IEqualityComparer接口
转载自诗人江湖老,原文地址class FuncEqualityComparer<T> : IEqualityComparer<T>{ readonly Func<T, T, bool> _comparer; readonly Func<T, int> _hash; public FuncEqualityCompare...转载 2019-01-17 14:59:19 · 306 阅读 · 0 评论 -
C#利用反射实现实体类List<T>索引器
相关背景: 在项目开发中,我们经常会自定义一些实体类,在某些需要动态赋值的功能中,我们无法知道到下一个需要赋值的字段名称是什么,只知道会从其他返回需要赋值的字段名称和值,这时候就需要实现索引器了,就像C# Datatable中的行索引器一样,可以根据字段名称实现查找和赋值,如下所示:DataTable dt = new DataTable();dt.Columns.A...原创 2019-05-27 16:09:48 · 3754 阅读 · 0 评论 -
C#利用反射将Datatable转化为指定实体类List<T>
背景介绍 在软件开发中肯定免不了和数据库打交道,我们对数据的增删改查最终会转化为SQL在数据库中执行。从SQLServer中查出数据一般有两种方式:一是ADO.NET直接写SQL语句从数据中查出数据,另一种是利用ORM框架得到数据。ADO.NET作为传统的数据库对接方式现在貌似已经不怎么流行了。让程序员直接写SQL实现增删改查功能存在一定和风险并且在程序中写SQL非常不利于程...原创 2019-05-27 16:47:38 · 1366 阅读 · 0 评论 -
C#利用反射将实体类List<T>转化为Datatable
背景介绍C#中实体类的操作十分简便,一般情况下不需要涉及ADO.NET,如果需要将实体类转化为Datatable,这个时候就需要手动写一个方法了,代码如下图所示: public static class IEnumerableExtention { /// <summary> /// 将实体类转化为Datatable ...原创 2019-05-27 16:57:08 · 2319 阅读 · 0 评论 -
C#中IEnumerable<T>.Distinct()将指定实体类对象用Lambda表达式实现多条件去重
背景说明在EF等ORM框架中需要以List实体类的方式对数据进行大量操作,其中免不了对一些数据进行去重复,而C#中IEnumerable.Distinct()便提供了这一功能。只是对刚开始接触的新人来说比价抽象难以接受,本文会对这一功能进行简要说明,如果有更好的实现方式,也请大家畅所语言。在写本文时,本人也在网上搜索了很多相关资料,其中有几篇比较有参考价值,也是重点,本文也是基于这几篇文章...原创 2019-05-30 17:29:44 · 3557 阅读 · 0 评论 -
C#中IEnumerable<T>.Join()和IEnumerable<T>.GroupJoin()简单使用
背景介绍:在无主外键关系的表中如果如果要关联就要用Join()和GroupJoin()方法了,我们先看Join()方法,代码如下:static void Main(string[] args){ List<SW_XSDD> sw_xsdd = new List<SW_XSDD>() { ...原创 2019-06-05 10:56:49 · 2107 阅读 · 0 评论 -
C#中IEnumerable<T>.Select()、SelectMany()的简单使用
本文主要用来记录、让自己有所了解和提升,以后遗忘时可以查看,关于SelectMany(),这篇文章写得不错,值得一看。话不多说,先上代码看Select()public class Person{ public string Name { get; set; } public string Gender { get; set; } public ...原创 2019-06-13 15:36:52 · 18229 阅读 · 1 评论 -
C#中利用Linq.Dynamic实现简单的动态表达式构建查询
背景介绍在ADO.NET中我们可以根据用户输入的查询条件拼接出指定的SQL语句进行查询或者筛选出所需的数据,但是在ORM框架如EF中,我们一般用LINQ操作数据查询,LINQ是否可以像SQL一样拼接查询条件呢?答案是可以的。这一技术叫Linq.Dynamic(动态Linq),Linq.Dynamic的出现解决了本人心中的疑惑,不然总感觉少了什么。不管怎么样,我们首先要做的是去网上找各种大神的资...原创 2019-06-03 14:10:15 · 7109 阅读 · 2 评论 -
C#中合并两个lambda表达式
在LINQ中如何查询条件不固定,如何合并两个lambda表达式?其中一个方式是LINQ.Dynamic,关于LINQ.Dynamic的简单使用可以参考这篇文章,还有一种方法是利用Expression表达式树,有关表达式树的介绍,可以看这篇文章。测试代码如下:public class Phone{ public string Country { get; set; } ...原创 2019-06-14 18:00:27 · 2611 阅读 · 1 评论 -
C#中泛型类型约束条件
记录一下,以免忘记。泛型的类型参数 where T :struct 类型参数需是值类型 where T:class 类型参数需是引用类型 where T:new() 类型参数要有一个public无参构造函数 where T:<base class name> 类型参数要派生自某个基类 where T:<interface ...原创 2019-06-19 14:19:05 · 1592 阅读 · 0 评论 -
C#中Lambda表达式动态拼接生成工具类
本文代码转自这篇文章,先做下记录。 public static class LambdaUtil<T> { /// <summary> /// lambda表达式:t=>true /// </summary> /// <returns></return...转载 2019-06-14 18:06:09 · 1501 阅读 · 0 评论 -
C#中IEnumerable<T>.GroupBy()的简单使用
背景介绍在实际项目中,对数据进行GroupBy肯定是常用需求之一,特别是采用EF等ORM框架后隔绝了用SQL语句直接操作数据,LINQ中的GroupBy肯定是要掌握的。首先先对一个字段GroupBy,代码如下: static void Main(string[] args) { List<Phone> PhoneL...原创 2019-06-04 10:13:32 · 3878 阅读 · 1 评论 -
[深入学习C#]LINQ查询表达式详解(1)——基本语法、使用扩展方法和Lambda表达式简化LINQ查询
在Git上下载源码 在工程中我们少不了要定义类或者结构去储存数据,这些数据将被临时地储存在内存中,现在我们想要对其完成一些类似于查找、过滤等等常见的任务的时候,我们该如何去做呢? 我们可以自己写代码去对集合中的每个对象进行遍历,检查变量的每个字段看其是否满足条件。这样的故事已经发生太多次了,微软怎么可能容忍在C#里发生如此弱智的事情呢?于是,C#的设计者决定在C#中集成查询的语法,...转载 2019-01-17 11:08:48 · 1418 阅读 · 1 评论