asp.net技术(公共方法)
大量数据写入数据库方法:SqlServer优化之批量插入(SqlBulkCopy、表值参数)
#region 获取 本周、本月、本季度、本年 的开始时间或结束时间
/// <summary>
/// 获取开始时间
/// </summary>
/// <param name="TimeType">Week、Month、Season、Year</param>
/// <param name="now"></param>
/// <returns>2017-01-01 00:00:00</returns>
public static DateTime? GetTimeStartByType(string TimeType, DateTime now)
{
switch (TimeType)
{
case "Week":
return now.AddDays(-(now.DayOfWeek == ? : (int)now.DayOfWeek) + ).Date;
case "Month":
return now.AddDays(-now.Day + ).Date;
case "Season":
var time = now.AddMonths( - ((now.Month - ) % ));
return time.AddDays(-time.Day + ).Date;
case "Year":
return now.AddDays(-now.DayOfYear + ).Date;
default:
return null;
}
} /// <summary>
/// 获取结束时间
/// </summary>
/// <param name="TimeType">Week、Month、Season、Year</param>
/// <param name="now"></param>
/// <returns>2017-12-31 23:59:59</returns>
public static DateTime? GetTimeEndByType(string TimeType, DateTime now)
{
DateTime dt = new DateTime();
switch (TimeType)
{
case "Week":
dt = now.AddDays( - (now.DayOfWeek == ? : (int)now.DayOfWeek)).Date; break;
case "Month":
dt = now.AddMonths().AddDays(-now.AddMonths().Day + ).AddDays(-).Date; break;
case "Season":
var time = now.AddMonths(( - ((now.Month - ) % ) - ));
dt = time.AddMonths().AddDays(-time.AddMonths().Day + ).AddDays(-).Date; break;
case "Year":
var time2 = now.AddYears();
dt = time2.AddDays(-time2.DayOfYear).Date; break;
default:
return null;
}
return dt.AddDays().AddSeconds(-);
}
#endregion
//ashx页面下调用多种方法 public void ProcessRequest(HttpContext context)
{
var dataType = context.Request["DataType"];
var keyid = context.Request["Keyid"]; var cMethod = string.Format("Get{0}", dataType);
var tp = typeof(DataFetch);
var mi = tp.GetMethod(cMethod);
if (mi != null)
{
mi.Invoke(Activator.CreateInstance(tp), new object[] { context, keyid });
}
} /// <summary>
/// 获取用户信息
/// </summary>
/// <param name="keyid"></param>
public void GetUser(HttpContext context, string keyid)
{ var context = HttpContext.Current;
//var param = context.Request["Param"]; context.WriteJson(json); }
/*泛型转换*/
/// <summary>
/// 获取视图状态的属性值
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="stateName">视图状态名称</param>
/// <param name="defauleValue">默认值</param>
public T GetState<T>(string stateName, T defauleValue)
{
T m_Value = defauleValue;
if (ViewState[stateName] != null)
{
m_Value = (T)ViewState[stateName];
}
return m_Value;
} /// <summary>
/// 获取视图状态的属性值
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="stateName">视图状态名称</param>
public T GetState<T>(string stateName)
{
return GetState<T>(stateName, default(T));
} private List<T_AberRedSetInfo> listAberRedSet
{
get { return this.GetState<List<T_AberRedSetInfo>>("T_AberRedSet"); }
set { this.SetState("T_AberRedSet", value); }
}
强制对所有代进行即时垃圾回收 GC.Collect();
深度拷贝与浅复制
///复制List--当然前题是List中的对象要实现ICloneable接口
public static IList<T> Clone<T>(this IList<T> listToClone) where T: ICloneable
{
return listToClone.Select(item => (T)item.Clone()).ToList();
}
#region Object拓展,深复制,对象转换
/// <summary>
/// 深复制,就是完全复制Clone,代替ICloneable接口
/// </summary>
/// <param name="oSource"></param>
/// <returns></returns>
public static T DeepCopy<T>(this T oSource)
{
T oClone;
DataContractSerializer dcs = new DataContractSerializer(typeof(T));
using (MemoryStream ms = new MemoryStream())
{
dcs.WriteObject(ms, oSource);
ms.Position = ;
oClone = (T)dcs.ReadObject(ms);
}
return oClone;
} /// <summary>
/// 将Object对象转换为目标对象,一般用于匿名对象转换。
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <param name="t"></param>
/// <returns></returns>
public static T ChangeObjectType<T>(this object obj, T t)
{
return (T)obj;
}
#endregion
[Serializable]
public class InvoiceDetailResponse : IDeepCopy, IShallowCopy
{ public Guid merchant_id { get; set; }
/// <summary>
/// 名称
/// </summary>
public string uname { get; set; } /// <summary>
/// 浅拷贝
/// </summary>
/// <returns></returns>
public object ShallowCopy()
{
return this.MemberwiseClone();
}
/// <summary>
/// 深拷贝 【不建议使用二进制流方法,此方法即使在类前面加了可序列化标志,调用该方法时也会报未序列化错误】,推荐使用反射方式
/// </summary>
/// <returns></returns>
public object DeepCopy()
{
using (MemoryStream stream = new MemoryStream())
{
BinaryFormatter bFormatter = new BinaryFormatter();
bFormatter.Serialize(stream, this);
stream.Seek(, SeekOrigin.Begin);
return (InvoiceDetailResponse)bFormatter.Deserialize(stream);
}
}
}
/// <summary>
/// 深拷贝接口
/// </summary>
interface IDeepCopy
{
object DeepCopy();
} /// <summary>
/// 浅拷贝接口
/// </summary>
interface IShallowCopy
{
object ShallowCopy();
}
///利用反射实现
public static T DeepCopyByReflection<T>(T obj)
{
if (obj is string || obj.GetType().IsValueType)
return obj; object retval = Activator.CreateInstance(obj.GetType());
FieldInfo[] fields = obj.GetType().GetFields(BindingFlags.Public|BindingFlags.NonPublic|BindingFlags.Static|BindingFlags.Instance);
foreach(var field in fields)
{
try
{
field.SetValue(retval, DeepCopyByReflection(field.GetValue(obj)));
}
catch { }
} return (T)retval;
}
public static T Clone<T>(T RealObject) {
using (Stream objectStream = new MemoryStream())
{
//利用 System.Runtime.Serialization序列化与反序列化完成引用对象的复制
IFormatter formatter = new BinaryFormatter();
formatter.Serialize(objectStream, RealObject);
objectStream.Seek(, SeekOrigin.Begin);
return (T)formatter.Deserialize(objectStream);
}
}
#region Object拓展,深复制,对象转换 /// <summary> /// 深复制,就是完全复制Clone,代替ICloneable接口 /// </summary> /// <param name="oSource"></param> /// <returns></returns> public static T DeepCopy<T>(this T oSource) { T oClone; DataContractSerializer dcs = new DataContractSerializer(typeof(T)); using (MemoryStream ms = new MemoryStream()) { dcs.WriteObject(ms, oSource); ms.Position = 0; oClone = (T)dcs.ReadObject(ms); } return oClone; }
/// <summary> /// 将Object对象转换为目标对象,一般用于匿名对象转换。 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="obj"></param> /// <param name="t"></param> /// <returns></returns> public static T ChangeObjectType<T>(this object obj, T t) { return (T)obj; } #endregion
asp.net技术(公共方法)的更多相关文章
- ASP.NET一些公共方法commTools
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Secu ...
- web开发过程中经常用到的一些公共方法及操作
进化成为程序猿也有段岁月了,所谓的经验,广度还是依旧,只不过是对于某种功能有了多种实现方式的想法.每天依旧不厌其烦的敲打着代码,每一行代码的回车似乎都有一种似曾相识的感觉.于是乎:粘贴复制,再粘贴再复 ...
- [Guava官方文档翻译] 5. Guava的Object公共方法 (Common Object Utilities Explained)
我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3537367.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验 ...
- (转)探讨:ASP.NET技术的学习顺序问题
探讨:ASP.NET技术的学习顺序问题 摘要:很多人对于ASP.NET的入门和学习顺序比较迷茫,今天让我们一起来跟随作者的思路学习探讨ASP.NET的学习顺序问题,希望有所帮助. 如果你已经有较多的面 ...
- 【转】探讨:ASP.NET技术的学习顺序问题
摘要:很多人对于ASP.NET的入门和学习顺序比较迷茫,今天让我们一起来跟随作者的思路学习探讨ASP.NET的学习顺序问题,希望有所帮助. 如果你已经有较多的面向对象开发经验,跳过以下这两步: 第一步 ...
- ASP.NET技术总结
ASP.NET是ASP相关技术的最新版本,它如何工作: (经典)ASP的后缀名是".asp",通常用VB编写:ASP.NET是".aspx"—— ASP.NET ...
- ASP程序加密/解密方法大揭密
如今,用ASP技术构建的网站随处可见.由于ASP脚本是在服务器上解释执行的(无法编译),因此你辛苦开发出来的ASP代码,很容易被人拷去任意修改,如何保护ASP源代码呢?这是每个ASP站长都会遇到的 ...
- J2EE项目开发中常用到的公共方法
在项目IDCM中涉及到多种工单,包括有:服务器|网络设备上下架工单.服务器|网络设备重启工单.服务器光纤网线更换工单.网络设备撤线布线工单.服务器|网络设备替换工单.服务器|网络设备RMA工单.通用原 ...
- php 图片上传的公共方法(按图片宽高缩放或原图)
写的用于图片上传的公共方法类调用方法: $upload_name='pic';$type = 'logo_val';$file_name = 'logo_' . $user_id .create_st ...
- 【ASP.NET实战教程】基于ASP.NET技术下多用户博客系统全程实战开发(NNblog)
岁末主推:牛牛老师主讲,多用户博客系统,基于ASP.NET技术,年后将带来移动业务平台项目项目目标: 打造个性品牌Blogo,定制多用户博客 为每一个博客用户提供个性化的 blogo解决方案,打造精品 ...
随机推荐
- Jetty启动配置解析
目录 1. jetty概述 2. spring-jetty启动配置 1. jetty概述 维基百科:Jetty是一个纯粹的基于Java的网页服务器和Java Servlet容器. Jetty Serv ...
- leetcode 996. Number of Squareful Arrays
给定一个长度小于 12 的数组 要求排列方式的种数 使得相邻和为完全平方 不考虑数学结构 将问题转化为 一笔画问题 和为完全平方代表 之间存在通路 回溯法 N^N 记忆化搜索 NN 2^N 判断是否是 ...
- PKU 百炼OJ 简单密码
http://bailian.openjudge.cn/practice/2767/ #include<iostream> #include <cmath> #include ...
- zip压缩工具类
java将有关zip压缩的内容都封装在java.util.zip宝中,用java实现zip压缩,不用考虑压缩算法,java已经将这些进行了封装 实际上用java实现zip压缩涉及的就是一个“输入输出流 ...
- Windows API 第17篇 GetLogicalDriveStrings 获取本机所有逻辑驱动器,以根目录的形式表示
函数原型:DWORD GetLogicalDriveStrings( DWORD nBufferLength, // size of buffer ...
- 模板:有旋treap
有旋转的treap,其实rotate比较难理解 没关系,上板子: 题目还是普通平衡树 #include<iostream> #include<cstdio> #include& ...
- Ionic 图片预览ion-slide-box,ion-slide,ion-scroll实现
1.index.html 代码 <body ng-app="starter"> <ion-pane> <ion-header-bar class=&q ...
- 提示框插件layer的使用讲解
官方网站:http://layer.layui.com/ 在页面中引入: <script src="js/layer-v3.0.3/layer/layer.js">&l ...
- VS2010中Cocos2d-x中文乱码问题
不罗嗦,直接进入主题,VS2010的默认编码是"GB2312",那么以创建一个label为例,当我们使用 CCLabelTTF::create(const char *label, ...
- Dock镜像初探索
一.安装CentOS版DockerCE 1.1 卸载旧的版本 yum remove docker \ docker-client \ docker-client-latest \ docker-com ...