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解决方案,打造精品 ...
随机推荐
- <随便写>佛祖,哈哈!
print(" _ooOoo_ ") print(" o8888888o ") print(" 88 . 88 ") print(" ...
- for update行级锁的作用
1.for update叫排它锁,是一种行级锁,一旦用户对某个行施加了行级加锁,则该用户可以查询也可以更新被加锁的数据行,其它用户只能查询但不能更新被加锁的数据行.如果其它用户想更新该表中的数据行,则 ...
- ls- Linux必学的60个命令
1.作用 ls命令用于显示目录内容,类似DOS下的dir命令,它的使用权限是所有用户. 2.格式 ls [options][filename] 3.options主要参数 -a, --all:不隐藏任 ...
- 比特承诺 Bit Commitment
Introduction-A story Alice:股票经纪人 Bob:股民 Alice:你的钱交给我,我替你买股票,我专业,挣钱多! Bob:怎么证明? Alice:我们上月买进的1 ...
- windwos API 第七篇 分离路径,组合路径 _splitpath _makepath
函数原型: //Break a path name into components. void _splitpath( const char *path, char *drive, char *dir ...
- xsd解析xml
下面讲述根据xml生成对应序列化反序列化类的过程,xml需要首先转化为xsd,然后再生成为实体类.其中,XSD是XML Schema Definition的缩写. 1.拥有一个xml文件 2.打开vs ...
- BZOJ 3236 AHOI 2013 作业 莫队+树状数组
BZOJ 3236 AHOI 2013 作业 内存限制:512 MiB 时间限制:10000 ms 标准输入输出 题目类型:传统 评测方式:文本比较 题目大意: 此时己是凌晨两点,刚刚做了Co ...
- vue.js_01_vue.js的入门
1.什么是Vue.js Vue.js 是目前最火的一个前端框架,React是最流行的一个前端框架(React除了开发网站,还可以开发手机App, Vue语法也是可以用于进行手机App开发的,需要借助于 ...
- 事务一致性理解 事务ACID特性的完全解答
A 原子性 事务管理者多个小操作,他们同时完成或者同时不完成就是原子性 C 一致性 一致性,是一个很相对的,很主观的概念, 一致性 描述的是 事务 从一个一致的状态变成 另一个一致的状态. 一致性需 ...
- rdf(资源描述框架)
资源描述框架(Resource Description Framework),一种用于描述Web资源的标记语言.RDF是一个处理元数据的XML(标准通用标记语言的子集)应用,所谓元数据,就是“描述数据 ...