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解决方案,打造精品 ...
随机推荐
- 《DSP using MATLAB》Problem 8.9
代码: %% ------------------------------------------------------------------------ %% Output Info about ...
- java基础之Date类
Date类: Date类概述 类 Date 表示特定的瞬间,精确到毫秒. 构造方法 public Date() public Date(long date) 成员方法 public long getT ...
- vue swiper点击后返回不能自动播放
解决方法: 在返回时重新开启轮播 组件中: <swiper :options="swiperOption" ref="mySwiper" :class=& ...
- HBase 数据坐标
- [转]Expression Blend实例中文教程(8) - 动画设计快速入门StoryBoard
上一篇,介绍了Silverlight动画设计基础知识,Silverlight动画是基于时间线的,对于动画的实现,其实也就是对对象属性的修改过程. 而Silverlight动画分类两种类型,From/T ...
- mapreduce.Job: Running job: job_1553100392548_0001
这几天一直在尝试一个mapreduce的例子,但是一直都是卡在mapreduce.Job: Running job: job_1553100392548_0001,查看日志也不报错,查看每个配置文件没 ...
- 洛谷p1605--迷宫 经典dfs
https://www.luogu.org/problemnew/show/P1605 用这种题来复习一下dfs 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和终点坐标,问 ...
- LRU Cache数据结构简介
什么是LRU Cache LRU是Least Recently Used的缩写,意思是最近最少使用,它是一种Cache替换算法. 什么是Cache?狭义的Cache指的是位于CPU和主存间的快速RAM ...
- java 在线拆分 word文档采用什么技术比较好?
在Java项目开发中,偶尔会遇到通过程序动态拆分word文档的需求,由于Java本身不能操作Word文档,在网上也都是讨论如何动态合并word,所以这个需求实现起来相当困难,下面就将近期对于Word文 ...
- js前台中获取后台传的值
后台controller String ifOffice = "yes";req.setAttribute("ifOffice", ifOffice); 前台j ...