C# 会可能需要的扩展
1. List 转成DataSet
/// <summary>
/// 集合数据转成 DataSet
/// </summary>
/// <typeparam name="TSource"></typeparam>
/// <param name="list"></param>
/// <returns></returns>
public static DataSet ToDataSet<TSource>(this IList<TSource> list)
{
Type elementType = typeof(TSource);
DataSet ds = new DataSet();
DataTable dt = new DataTable();
ds.Tables.Add(dt); foreach (var pi in elementType.GetProperties())
{
Type colType = Nullable.GetUnderlyingType(pi.PropertyType) ?? pi.PropertyType;
dt.Columns.Add(pi.Name, colType);
} foreach (TSource item in list)
{
DataRow row = dt.NewRow();
foreach (var pi in elementType.GetProperties())
{
row[pi.Name] = pi.GetValue(item, null) ?? DBNull.Value;
}
dt.Rows.Add(row);
} return ds;
} public static DataSet ToDataSet<TSource>(this ICollection<TSource> list)
{
Type elementType = typeof(TSource);
DataSet ds = new DataSet();
DataTable dt = new DataTable();
ds.Tables.Add(dt); foreach (var pi in elementType.GetProperties())
{
Type colType = Nullable.GetUnderlyingType(pi.PropertyType) ?? pi.PropertyType;
dt.Columns.Add(pi.Name, colType);
} foreach (TSource item in list)
{
DataRow row = dt.NewRow();
foreach (var pi in elementType.GetProperties())
{
row[pi.Name] = pi.GetValue(item, null) ?? DBNull.Value;
}
dt.Rows.Add(row);
} return ds;
}
2. 枚举扩展函数
/// <summary>
/// 枚举扩展函数
/// <para>把枚举转换成对应的byte 类型,再转换成String</para>
/// </summary>
/// <param name="en"></param>
/// <returns></returns>
public static string ToByteString(this Enum en)
{
return ((byte)(dynamic)en).ToString();
}
3. Md5加密函数
/// <summary>
/// Md5加密函数
/// </summary>
/// <param name="strPwd"></param>
/// <returns></returns>
public static string Encrypt(string strPwd)
{
var md5Hasher = MD5.Create(); var data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(strPwd)); //将字符编码为一个字节序列 var sBuilder = new StringBuilder(); //计算data字节数组的哈希值 foreach (var @byte in data)
{
sBuilder.Append(@byte.ToString("x2"));
} return sBuilder.ToString();
}
4.MVC 扩展
/// <summary>
/// MVC 扩展
/// </summary>
/// <param name="parer">The parer.</param>
/// <param name="subjectType">Type of the subject.</param>
/// <returns></returns>
public static MvcHtmlString MvcHtmlStringExpand(string parer, byte subjectType)
{
var html = "<h3>这是一个扩展方法</h3>"; return MvcHtmlString.Create(html);
}
5.字符串转换成byte
/// <summary>
/// 字符串转换成byte
/// </summary>
/// <param name="val"></param>
/// <returns></returns>
public static byte ToByte(this string val)
{
if (string.IsNullOrEmpty(val))
{
return ;
}
var intVal = int.Parse(val); return (byte)intVal;
}
6.字符串转换成int16
/// <summary>
/// 字符串转换成int16
/// </summary>
/// <param name="val"></param>
/// <returns></returns>
public static short ToInt16(this string val)
{
if (string.IsNullOrEmpty(val))
{
return ;
}
var intVal = int.Parse(val); return (short)intVal;
}
7.字符串是否为空
/// <summary>
/// 字符串是否为空
/// </summary>
/// <param name="val"></param>
/// <returns></returns>
public static bool IsNull(this string val)
{
return string.IsNullOrEmpty(val);
}
8.字符串是不为空,有值状态
/// <summary>
/// 字符串是不为空,有值状态
/// </summary>
/// <param name="val"></param>
/// <returns></returns>
public static bool IsNotNull(this string val)
{
return !string.IsNullOrEmpty(val);
}
C# 会可能需要的扩展的更多相关文章
- 如何开发一个chrome扩展
chrome是一个不错的浏览器,web开发者工作中一般都会使用chrome做为默认浏览器,它有很多扩展,给浏览器补充了各种功能,增强了用户体验.chrome具体能干什么?怎么做出来的呢? chrome ...
- .NET框架设计(常被忽视的C#设计技巧)
阅读目录: 1.开篇介绍 2.尽量使用Lambda匿名函数调用代替反射调用(走进声明式设计) 3.被忽视的特性(Attribute)设计方式 4.扩展方法让你的对象如虎添翼(要学会使用扩展方法的设计思 ...
- Phonegap中自定义插件的使用
在phonegap中需要实现特定相关的功能,可能需要自定义扩展一下功能,那么扩展phonegap组件就成为了可能. 源代码结构图: 本文目的在于讲述怎么扩展一个phonegap组件以及实现. 针对ph ...
- 基于 ANSIBLE 自动化运维实践
摘要:运维这个话题很痛苦,你做任何的产品都离不开运维.不管你用什么语言.什么平台.什么技术,真正能够决定你产品成熟度的很有可能就是你运维的能力.取自 云巴 CEO 张虎在 ECUG 大会上的分享. 云 ...
- Android启动过程以及各个镜像的关系
Android启动过程 Android在启动的时候,会由UBOOT传入一个init参数,这个init参数指定了开机的时候第一个运行的程序,默认就是init程序,这个程序在ramdisk.img中.可以 ...
- 修改Unity脚本模板的方法合计
作为一个习惯于偷懒的程序,重复性的无聊内容是最让人无奈的事,就比如我们创建Unity脚本之后,需要手动调整生成的新脚本的格式.编码.内容:如果我们要编写的是编辑器或者服务器端脚本,需要修改的内容就会更 ...
- .NET框架设计—常被忽视的C#设计技巧
.NET框架设计—常被忽视的C#设计技巧 阅读目录: 1.开篇介绍 2.尽量使用Lambda匿名函数调用代替反射调用(走进声明式设计) 3.被忽视的特性(Attribute)设计方式 4.扩展方法让你 ...
- 【转载】 .NET框架设计—常被忽视的C#设计技巧
阅读目录: 1.开篇介绍 2.尽量使用Lambda匿名函数调用代替反射调用(走进声明式设计) 3.被忽视的特性(Attribute)设计方式 4.扩展方法让你的对象如虎添翼(要学会使用扩展方法的设计思 ...
- 【.NET Core项目实战-统一认证平台】第二章网关篇-定制Ocelot来满足需求
[.NET Core项目实战-统一认证平台]开篇及目录索引 这篇文章,我们将从Ocelot的中间件源码分析,目前Ocelot已经实现那些功能,还有那些功能在我们实际项目中暂时还未实现,如果我们要使用这 ...
随机推荐
- 移动销售端app的需求分析
随着网络时代的发展,人们对于网络的依赖越来越大,网上购物便成了一个很大的消费者市场.. 如何分析一个综合的移动销售端app的需求我认为首先要确定用户,从用户的角度一个一个功能过,评估每一个功能的需求, ...
- hibernate中获得session的方式
his.getsession实际上是调用了父类中的方法获得session.使用spring管理hibernate的SessionFactory的时候,这个方法会从session池中拿出一session ...
- 在windows下配置wnmp
1.下载mysql 2.下载php 3.下载nginx 4.创建文件夹wnmp 把php,nginx,mysql放到wnmp目录下,另外新建www目录, 用于存放web文件 配置nginx,如下(ng ...
- Project Woosah Tu (五色土)
I bought this Raspberry Pi (model B) in spring 2013, I hadn't done too much with it except for some ...
- http学习 1-3 chapter3-报文
如果说HTTP是因特网的信使,那么HTTP报文就是它用来搬东西的包裹了. 报文是如何流动的. HTTP报文的三个组成部分(起始行.首部和实体的主体部分) 请求和响应报文之间的区别 请求报文支持的各种功 ...
- 1.Counting DNA Nucleotides
Problem A string is simply an ordered collection of symbols selected from some alphabet and formed i ...
- Android之ScrollView嵌套ListView和GridView冲突
由于ListView,GridView本身都继承于ScrollView,一旦在ScrollView中嵌套ScrollView, 在ScrollView中嵌套使用ListView或者GridView,L ...
- 初学JAVA的 感想 尹鑫磊
开始学习任何一门课(包括java),兴趣最重要.一直觉得自己在学计算机编程语言,学习了很多,但每门语言都停留在知识边缘地带,都没深入到它们的精华部分,对它们的精华部分知之甚少,于是趁学校开设这门课,并 ...
- Linux Command Line 笔记(1)
Yunduan CUI graphical user interfaces make easy tasks easy, while command line interfaces make diffi ...
- Atom编辑器添加eclipse快捷键
Settings - Keybindings - 点击"your keymap file" 'atom-text-editor': 'alt-/': 'autocomplete- ...