json序列化.xml序列化.图片转base64.base64转图片.生成缩略图.IEnumerable<TResult> Select<TSource, TResult>做数据转换的五种方式
JSON序列化
- /// <summary>
- /// JSON序列化
- /// </summary>
- public static class SPDBJsonConvert
- {
- /// <summary>
- /// 对象序列化JSON
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="t"></param>
- /// <returns></returns>
- public static string JsonSerializer<T>(T t)
- {
- DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
- MemoryStream ms = new MemoryStream();
- ser.WriteObject(ms, t);
- string jsonString = Encoding.UTF8.GetString(ms.ToArray());
- ms.Close();
- return jsonString;
- }
- /// <summary>
- /// JSON序列化对象
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="jsonString"></param>
- /// <returns></returns>
- public static T JsonDeserialize<T>(string jsonString)
- {
- DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
- MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
- T obj = (T)ser.ReadObject(ms);
- return obj;
- }
- }
xml序列化
- /// <summary>
- /// XML反序列化
- /// </summary>
- /// <param name="type">类型</param>
- /// <param name="xml">XML字符串</param>
- /// <returns></returns>
- public static object Deserialize(Type type, string xml)
- {
- try
- {
- using (StringReader sr = new StringReader(xml))
- {
- XmlSerializer xmldes = new XmlSerializer(type);
- return xmldes.Deserialize(sr);
- }
- }
- catch (Exception e)
- {
- return null;
- }
- }
- /// <summary>
- /// 序列化
- /// </summary>
- /// <param name="type">类型</param>
- /// <param name="obj">对象</param>
- /// <returns></returns>
- public static string Serializer(Type type, object obj)
- {
- MemoryStream Stream = new MemoryStream();
- XmlSerializer xml = new XmlSerializer(type);
- try
- {
- //序列化对象
- xml.Serialize(Stream, obj);
- }
- catch (InvalidOperationException)
- {
- throw;
- }
- Stream.Position = ;
- StreamReader sr = new StreamReader(Stream);
- string str = sr.ReadToEnd();
- sr.Dispose();
- Stream.Dispose();
- return str;
- }
图片转base64.base64转图片
- /// <summary>
- /// 图片转base64
- /// </summary>
- /// <param name="filename"></param>
- public static string ImgToBase64String(string filename)
- {
- Bitmap bmp = new Bitmap(filename);
- MemoryStream ms = new MemoryStream();
- bmp.Save(ms, ImageFormat.Jpeg);
- byte[] arr = new byte[ms.Length];
- ms.Position = ;
- ms.Read(arr, , (int)ms.Length);
- ms.Close();
- String strbaser64 = Convert.ToBase64String(arr);
- return strbaser64;
- }
- /// <summary>
- /// base64转图片
- /// </summary>
- /// <param name="base64Code"></param>
- public static Bitmap Base64StringToImage(string base64Code)
- {
- byte[] arr = Convert.FromBase64String(base64Code);
- MemoryStream ms = new MemoryStream(arr);
- Bitmap bmp = new Bitmap(ms);
- ms.Close();
- return bmp;
- }
生成缩略图
- /// <summary>
- /// 生成缩略图
- /// </summary>
- /// <param name="img">原始图片</param>
- /// <param name="thumbnailImagePath">缩略图地址</param>
- /// <param name="width">图片宽度</param>
- /// <param name="height">图片高度</param>
- /// <param name="p"></param>
- public static void CutImage(Image img, string thumbnailImagePath, int width, int height)
- {
- Image serverImage = img;
- //画板大小
- int towidth = width;
- int toheight = height;
- //缩略图矩形框的像素点
- int x = ;
- int y = ;
- int ow = serverImage.Width;
- int oh = serverImage.Height;
- if (ow > oh)
- {
- toheight = serverImage.Height * width / serverImage.Width;
- }
- else
- {
- towidth = serverImage.Width * height / serverImage.Height;
- }
- //新建一个bmp图片
- Image bm = new Bitmap(width, height);
- //新建一个画板
- Graphics g = Graphics.FromImage(bm);
- //设置高质量插值法
- g.InterpolationMode = InterpolationMode.High;
- //设置高质量,低速度呈现平滑程度
- g.SmoothingMode = SmoothingMode.HighQuality;
- //清空画布并以透明背景色填充
- g.Clear(Color.White);
- //在指定位置并且按指定大小绘制原图片的指定部分
- g.DrawImage(serverImage, new Rectangle((width - towidth) / , (height - toheight) / , towidth, toheight), , , ow, oh, GraphicsUnit.Pixel);
- //以jpg格式保存缩略图
- bm.Save(thumbnailImagePath, ImageFormat.Jpeg);
- serverImage.Dispose();
- bm.Dispose();
- g.Dispose();
- }
很多时候很多状态数据库里可能都是保存的int。
但是在web上要转换成string.由于model要映射到数据库。
一般不能随意添加字段。所以在此提供一个方便的数据转换方法。
至少不用写个循环去匹配每个字段
方式1
- List<EntityBM_CompanyDept> result = data.Select(ConvertBM_CompanyDept).ToList();
- /// <summary>
- /// 数据转换
- /// </summary>
- /// <param name="model"></param>
- /// <returns></returns>
- [NonAction]
- protected virtual EntityBM_CompanyDept ConvertBM_CompanyDept(BM_CompanyDept model)
- {
- return new EntityBM_CompanyDept()
- {
- Id = model.Id,
- DeptId = model.DeptId,
- DeptName = model.DeptName,
- ParentDeptId = model.ParentDeptId,
- LevelCode = model.LevelCode,
- IsCostCenter = model.IsCostCenter,
- IsProfitCenter = model.IsProfitCenter,
- CompanyDeptStatus = model.CompanyDeptStatus,
- Result = ""
- };
- }
方式二
- List<EntityBM_CompanyDept> l = data.Select<BM_CompanyDept, EntityBM_CompanyDept>((dr) =>
- {
- EntityBM_CompanyDept m = new EntityBM_CompanyDept()
- { Id = dr.Id
- //这里写转换字段
- };
- return m;
- }).ToList<EntityBM_CompanyDept>();
方式三
- List<EntityBM_CompanyDept> l1 = data.Select((BM_CompanyDept) => {
- EntityBM_CompanyDept m = new EntityBM_CompanyDept()
- { Id = BM_CompanyDept.Id,//转换字段
- };
- return m;
- }).ToList<EntityBM_CompanyDept>();
方式四
- List<ExtraterritorialDataDto> rows = new List<ExtraterritorialDataDto>();
- if (rows != null)
- {
- rows = rows.Select(a => new ExtraterritorialDataDto
- {
- Id = a.Id,//主键列
- messagesubject = a.messagesubject,//主题
- senderaddress = a.senderaddress,//发送者
- Month = a.datetime.ToString(),//年月日
- recipientaddress = a.recipientaddress//接受者
- }).ToList();
- }
方式五
- List<ExtraterritorialDataDto> rows = new List<ExtraterritorialDataDto>();
- if (rows != null)
- {
- var rows2 = rows.Select(a => new
- {
- Id = a.Id,//主键列
- messagesubject = a.messagesubject,//主题
- senderaddress = a.senderaddress,//发送者
- Month = a.datetime.ToString(),//年月日
- recipientaddress = a.recipientaddress//接受者
- }).ToList();
- }
方式四和方式五的差距在于一个是显式类型。一个是匿名类型
json序列化.xml序列化.图片转base64.base64转图片.生成缩略图.IEnumerable<TResult> Select<TSource, TResult>做数据转换的五种方式的更多相关文章
- ASP.NET Web API中的JSON和XML序列化
ASP.NET Web API中的JSON和XML序列化 前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok ...
- 【ASP.NET Web API教程】6.2 ASP.NET Web API中的JSON和XML序列化
谨以此文感谢关注此系列文章的园友!前段时间本以为此系列文章已没多少人关注,而不打算继续下去了.因为文章贴出来之后,看的人似乎不多,也很少有人对这些文章发表评论,而且几乎无人给予“推荐”.但前几天有人询 ...
- php json与xml序列化/反序列化
在web开发中对象的序列化与反序列化经常使用,比较主流的有json格式与xml格式的序列化与反序列化,今天想写个jsop的小demo,结果发现不会使用php序列化,查了一下资料,做个笔记 简单数组js ...
- Asp.Net Web API 2第十三课——ASP.NET Web API中的JSON和XML序列化
前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html 本文描述ASP.NET W ...
- C# json、xml序列化
json序列化: public static string SerializeJson<T>(T json) { // 1. 需要添加引用 Newtonsoft.Json.dll,默认为 ...
- JAVA解析xml的五种方式比较
1)DOM解析 DOM是html和xml的应用程序接口(API),以层次结构(类似于树型)来组织节点和信息片段,映射XML文档的结构,允许获取 和操作文档的任意部分,是W3C的官方标准 [优点] ① ...
- Yii 图片FTP批量上传 并生成缩略图
图片批量上传,前台使用 uploadify.swf,这个就不介绍了.这里使用两个扩展,一个是FTP上传的扩展,还有一个是生成缩略图的扩展地址:http://www.yiiframework.com/e ...
- Android_Bitmap_图片的二次采样并生成缩略图
1.Bitmap概述 Android系统支持几种图片(.png (preferred), .jpg (acceptable), .gif (discouraged)), 其中Bitmap位图#ffff ...
- java图片处理(加水印、生成缩略图)等之Thumbnailator库
Thumbnailator 是一个为Java界面更流畅的缩略图生成库.从API提供现有的图像文件和图像对象的缩略图中简化了缩略过程,两三行代码就能够从现有图片生成缩略图,且允许微调缩略图生成,同时保持 ...
随机推荐
- (C#)Windows Shell 外壳编程系列5 - 获取图标
(本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢-) 接上一节:(C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令 有 ...
- linux下查找命令两则
由于本人不会阅读man手册,因此需要几下两个常用的查找命令: (1)在某个目录及其子目录查找某个文件并打印完整路径: find ./ -name "assertions.h" -e ...
- mysql5.6之 传输表空间迁移表或恢复误删除的表
一,简单说明: 1),传输表空间的限制: 1,mysql 版本 5.6.6 及其以上,并且版本建议源和目标版本建议都是GA版并且大版本一样 2,表引擎为innodb并且开启独立表空间 innod ...
- JavaScript正则常用知识总结
一.JavaScript正则相关方法 str.match(regexp)与regexp.exec(str)功能类似. str.search(regexp)与regexp.test(str)功能类似. ...
- Spark Shuffle大揭秘
什么是Shuffle: Shuffle中文翻译为“洗牌”,需要Shuffle的关键原因是某种具有共同特征的数据需要最终汇聚到一个计算节点上进行计算. Shuffle面临的问题: 1. 数据量非常大: ...
- Azure VNet介绍
Azure VNet的介绍 VNet是Azure云中逻辑隔离的虚拟网络.它包含两个含义: Azure的用户可以在VNet中创建自己的各种资源,感觉想自己的数据中心中一样; 在一个VNet中创建的资源和 ...
- Azure上每个VM多个IP地址
Azure的每个VM都有多种IP地址,包括DIP.VIP和PIP.具体如下: DIP地址是在VM里能够看到的IP地址,即私网地址:PIP地址是这个VM关联的公网IP地址,即公网地址:VIP地址是负载均 ...
- scala 定时器
假如我们要开发一个定时器,该定时器每秒钟执行一定的动作,我们如何把要执行的动作传给定时器?最直观的回答是:传一个实现动作的函数(function) object Helloworld { def on ...
- Java-API:java.util.UUID
ylbtech-Java-API:java.util.UUID 1.返回顶部 2.返回顶部 3.返回顶部 4. 百科返回顶部 5.返回顶部 0. https://docs.oracle ...
- rsync 同步mac机器目录数据到windows2008R2
openssh rsync -azvP --progress -e "ssh -p 6099" /ahwater/rsync/ ahwater@ip:/ahwater