using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace MvcTest.Extends
{
/// <summary>
/// 分页元素位置
/// </summary>
public enum PagerElementPosition
{
Left,
Right
}
public class PagerConfig
{
/// <summary>
/// 记录总条数
/// </summary>
public int TotalRecord { get; set; }
/// <summary>
/// 记录的单位,默认为“条”
/// </summary>
public string RecordUnit { get; set; }
/// <summary>
/// 记录的名称,默认为“记录”
/// </summary>
public string RecordName { get; set; }
/// <summary>
/// 当前页码的参数名
/// </summary>
public string CurrentPageKey { get; set; }
/// <summary>
/// 当前页码 只读
/// </summary>
public int CurrentPage
{
get
{
if (HttpContext.Current.Request.Params[CurrentPageKey] == null)
{
return 1;
}
else
{
try
{
int currentPage = Convert.ToInt32(HttpContext.Current.Request.Params[CurrentPageKey]);
if (currentPage < 1)
{
return 1;
}
else if (currentPage > TotalPage)
{
return TotalPage;
}
else
{
return currentPage;
}
}
catch
{
return 1;
}
}
}
}
private int _PageSize;
/// <summary>
/// 每页显示记录数
/// </summary>
public int PageSize
{
get
{
return _PageSize;
}
set
{
if (value < 1)
{
_PageSize = 1;
}
else
{
_PageSize = value;
}
}
}
/// <summary>
/// 总页数 只读
/// </summary>
public int TotalPage
{
get
{
return (int)Math.Ceiling(TotalRecord / (double)PageSize);
}
}
/// <summary>
/// 是否显示首页、尾页链接
/// </summary>
public bool ShowFirstLastPageLink { get; set; }
/// <summary>
/// 是否显示上一页、下一页链接
/// </summary>
public bool ShowPrevNextPageLink { get; set; }
/// <summary>
/// 是否显示数字按钮
/// </summary>
public bool ShowDigitalLink { get; set; }
/// <summary>
/// 数字按钮数量
/// </summary>
public int DigitalLinkCount { get; set; }
/// <summary>
/// 是否显示总记录数
/// </summary>
public bool ShowTotalRecord { get; set; }
/// <summary>
/// 总记录数出现位置
/// </summary>
public PagerElementPosition TotalRecordPosition { get; set; }
/// <summary>
/// 是否显示当前页数和总页数信息
/// </summary>
public bool ShowPageInfo { get; set; }
/// <summary>
/// 当前页和总页数信息显示位置
/// </summary>
public PagerElementPosition PageInfoPosition { get; set; }
/// <summary>
/// 是否显示GoTo输入区域
/// </summary>
public bool ShowGoTo { get; set; }
/// <summary>
/// 指定生成的元素对应的class的前缀字符
/// </summary>
public string CssClassPreWord { get; set; }
/// <summary>
/// 是否创建为ajax分页控件
/// </summary>
public bool UseAjax { get; set; }
/// <summary>
/// Ajax提交后更新的html元素id
/// </summary>
public string AjaxUpdateTargetID { get; set; }
/// <summary>
/// Ajax提交后调用的js function名称
/// </summary>
public string AjaxSuccessFunctionName { get; set; }
/// <summary>
/// 是否自动生成Ajax提交后调用的js function
/// </summary>
public bool AutoGenarateAjaxSuccessFunction { get; set; }
/// <summary>
/// 使用默认值初始化设置
/// </summary>
public PagerConfig()
{
PageSize = 4;
RecordUnit = "条";
RecordName = "记录";
CurrentPageKey = "page";
CssClassPreWord = "pager";
ShowFirstLastPageLink = true;
ShowPrevNextPageLink = true;
ShowDigitalLink = true;
DigitalLinkCount = 10;
ShowTotalRecord = false;
TotalRecordPosition = PagerElementPosition.Left;
ShowPageInfo = false;
PageInfoPosition = PagerElementPosition.Left;
ShowGoTo = false;
UseAjax = false;
AjaxUpdateTargetID = "";
AjaxSuccessFunctionName = "OnPageChanged";
AutoGenarateAjaxSuccessFunction = true;
}
}
/// <summary>
/// 配合Pager扩展实现分页的帮助类
/// </summary>
public class PagerHelper
{
/// <summary>
/// 获取记录开始和结束编号,并返回实际的页码
/// </summary>
/// <param name="allCount">记录总条数</param>
/// <param name="pageSize">页大小</param>
/// <param name="pageIndex">(输出)当前页码</param>
/// <param name="startIndex">(输出)开始编号</param>
/// <param name="endIndex">(输出)结束编号</param>
/// <param name="currentPageKey">分页参数名称</param>
/// <param name="pageIndexIs0Based">页码编号是否从0开始,默认为否</param>
/// <param name="recordIndexIs0Based">记录编号是否从0开始,默认为否</param>
public static void GetStartAndEndIndex(int allCount, int pageSize, out int pageIndex, out int startIndex, out int endIndex, string currentPageKey = "page", bool pageIndexIs0Based = false, bool recordIndexIs0Based = false)
{
//计算pageIndex的实际值
pageIndex = GetRealPageIndex(allCount, pageSize, currentPageKey, pageIndexIs0Based); //计算过程是0based的
if (!pageIndexIs0Based)
{
pageIndex--; //转成0based
}
//计算startIndex和endIndex
startIndex = pageIndex * pageSize;
endIndex = startIndex + pageSize - 1;
if (endIndex > allCount - 1)
{
endIndex = allCount - 1;
} //0based计算完成,下面根据设置不同,输出不同
if (!pageIndexIs0Based)
{
pageIndex++;
}
if (!recordIndexIs0Based)
{
startIndex++;
endIndex++;
}
} /// <summary>
/// 返回实际页码
/// </summary>
/// <param name="allCount">总记录数</param>
/// <param name="pageSize">页面大小</param>
/// <param name="currentPageKey">分页参数名称</param>
/// <param name="pageIndexIs0Based">页码编号是否从0开始,默认为否</param>
/// <returns>实际页码</returns>
public static int GetRealPageIndex(int allCount, int pageSize, string currentPageKey = "page", bool pageIndexIs0Based = false)
{
int pageIndex;
//整个计算过程都是0based的
if (pageSize < 1)
{
pageSize = 1; //容错
}
if (HttpContext.Current.Request.Params[currentPageKey] == null)
{
pageIndex = 0;
}
else
{
try
{
int _pageIndex = Convert.ToInt32(HttpContext.Current.Request.Params[currentPageKey]); //待判断的页码
if (!pageIndexIs0Based)
{
_pageIndex--; //转成0based
}
if (_pageIndex < 0)
{
pageIndex = 0;
}
else
{
int totalPage = (int)Math.Ceiling(allCount / (double)pageSize);
if (_pageIndex >= totalPage)
{
pageIndex = totalPage - 1;
}
else
{
pageIndex = _pageIndex;
}
}
}
catch
{
pageIndex = 0;
}
}
//0based计算完成,下面根据设置不同,输出不同
return (pageIndexIs0Based) ? pageIndex : pageIndex + 1;
} }
}
using MvcTest.Extends;
using System;
using System.Collections.Generic;
using System.Linq; using System.Text;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing; namespace MvcTest.HTML
{
public static class PagerExtensions
{
//提取 返回a标签 方法
private static string getLinkHtml(UrlHelper urlHelper, bool useAjax, string ajaxSuccessFunction, string linkContent, string actionName, string controllerName, RouteValueDictionary routeValues)
{
string link = "";
if (useAjax)
{
link += "<a href=\"javascript:$.post('" + urlHelper.Action(actionName, controllerName) + "',{";
//将route放到post表单中
foreach (var route in routeValues.Keys)
{
link += route + ":'" + routeValues[route].ToString() + "',";
}
if (routeValues.Count > 0)
{
link = link.Remove(link.Length - 1);
}
link += "}," + ajaxSuccessFunction + ")\" >";
}
else
{
link += "<a href=\"" + urlHelper.Action(actionName, controllerName, routeValues) + "\">";
}
link += linkContent;
link += "</a>";
return link;
} #region 分页扩展 /// <summary>
/// 返回用于分页的div元素
/// </summary>
/// <param name="htmlHelper">HtmlHelper</param>
/// <param name="pagerConfig">分页设置对象</param>
/// <returns></returns>
public static MvcHtmlString Pager(this HtmlHelper htmlHelper, PagerConfig pagerConfig)
{
return Pager(htmlHelper, "", "", new { }, new { }, pagerConfig);
} /// <summary>
/// 返回用于分页的div元素
/// </summary>
/// <param name="htmlHelper">HtmlHelper</param>
/// <param name="htmlAttributes">html属性对象</param>
/// <param name="pagerConfig">分页设置对象</param>
/// <returns></returns>
public static MvcHtmlString Pager(this HtmlHelper htmlHelper, object htmlAttributes, PagerConfig pagerConfig)
{
return Pager(htmlHelper, "", "", new { }, htmlAttributes, pagerConfig);
}
/// <summary>
/// 返回用于分页的div元素
/// </summary>
/// <param name="htmlHelper">HtmlHelper</param>
/// <param name="actionName">方法</param>
/// <param name="htmlAttributes">html属性对象</param>
/// <param name="pagerConfig">分页设置对象</param>
/// <returns></returns>
public static MvcHtmlString Pager(this HtmlHelper htmlHelper, string actionName, object htmlAttributes, PagerConfig pagerConfig)
{
return Pager(htmlHelper, actionName, "", new { }, htmlAttributes, pagerConfig);
}
/// <summary>
/// 返回用于分页的div元素
/// </summary>
/// <param name="htmlHelper">HtmlHelper</param>
/// <param name="actionName">方法</param>
/// <param name="controllerName">控制器</param>
/// <param name="htmlAttributes">html属性对象</param>
/// <param name="pagerConfig">分页设置对象</param>
/// <returns></returns>
public static MvcHtmlString Pager(this HtmlHelper htmlHelper, string actionName, string controllerName, object htmlAttributes, PagerConfig pagerConfig)
{
return Pager(htmlHelper, actionName, controllerName, new { }, htmlAttributes, pagerConfig);
}
/// <summary>
/// 返回用于分页的div元素
/// </summary>
/// <param name="htmlHelper">HtmlHelper</param>
/// <param name="actionName">方法</param>
/// <param name="controllerName">控制器</param>
/// <param name="routeValues">路由参数</param>
/// <param name="htmlAttributes">html属性对象</param>
/// <param name="pagerConfig">分页设置对象</param>
/// <returns></returns>
public static MvcHtmlString Pager(this HtmlHelper htmlHelper, string actionName, string controllerName, object routeValues, object htmlAttributes, PagerConfig pagerConfig)
{ RouteValueDictionary RouteValues;
if (routeValues == null)
{
RouteValues = new RouteValueDictionary();
}
else
{
RouteValues = new RouteValueDictionary(routeValues);
} UrlHelper Url = new UrlHelper(htmlHelper.ViewContext.RequestContext);
AjaxHelper Ajax = new AjaxHelper(htmlHelper.ViewContext, htmlHelper.ViewDataContainer); StringBuilder sbPager = new StringBuilder();
sbPager.Append("<div");
//利用反射获取htmlAttributes的全部元素和值
if (htmlAttributes != null)
{
System.Reflection.PropertyInfo[] htmlProperties = (System.Reflection.PropertyInfo[])htmlAttributes.GetType().GetProperties();
foreach (var property in htmlProperties)
{
sbPager.Append(" " + property.Name + "=\"" + property.GetValue(htmlAttributes).ToString() + "\"");
}
}
sbPager.Append(">");
//左侧记录总数信息
if (pagerConfig.ShowTotalRecord && pagerConfig.PageInfoPosition == PagerElementPosition.Left)
{
sbPager.Append("<span class=\"" + pagerConfig.CssClassPreWord + "-count\">共" + pagerConfig.TotalRecord + pagerConfig.RecordUnit + pagerConfig.RecordName + "</span>");
}
//左侧页码信息
if (pagerConfig.ShowPageInfo && pagerConfig.PageInfoPosition == PagerElementPosition.Left)
{
sbPager.Append("<span class=\"" + pagerConfig.CssClassPreWord + "-info\">第" + pagerConfig.CurrentPage + "页/共" + pagerConfig.TotalPage + "页</span>");
}
//首页
if (pagerConfig.ShowFirstLastPageLink)
{
if (pagerConfig.CurrentPage > 1)
{
RouteValues[pagerConfig.CurrentPageKey] = 1;
sbPager.Append("<span class=\"" + pagerConfig.CssClassPreWord + "-btn\">" + getLinkHtml(Url, pagerConfig.UseAjax, pagerConfig.AjaxSuccessFunctionName, "首页", actionName, controllerName, RouteValues) + "</span>");
}
else
{
sbPager.Append("<span class=\"" + pagerConfig.CssClassPreWord + "-btn\">首页</span>");
}
}
//上一页
if (pagerConfig.ShowPrevNextPageLink)
{
if (pagerConfig.CurrentPage > 1)
{
RouteValues[pagerConfig.CurrentPageKey] = pagerConfig.CurrentPage - 1;
sbPager.Append("<span class=\"" + pagerConfig.CssClassPreWord + "-btn\">" + getLinkHtml(Url, pagerConfig.UseAjax, pagerConfig.AjaxSuccessFunctionName, "上一页", actionName, controllerName, RouteValues) + "</span>");
}
else
{
sbPager.Append("<span class=\"" + pagerConfig.CssClassPreWord + "-btn\">上一页</span>");
}
}
//数字导航开始
if (pagerConfig.ShowDigitalLink)
{ int shownStartPageIndex, shownEndPageIndex;
//总页数少于要显示的页数,页码全部显示
if (pagerConfig.DigitalLinkCount >= pagerConfig.TotalPage)
{
shownStartPageIndex = 1;
shownEndPageIndex = pagerConfig.TotalPage;
}
else//显示指定数量的页码
{
int forward = (int)Math.Ceiling(pagerConfig.DigitalLinkCount / 2.0);
if (pagerConfig.CurrentPage > forward)//起始页码大于1
{
shownEndPageIndex = pagerConfig.CurrentPage + pagerConfig.DigitalLinkCount - forward;
if (shownEndPageIndex > pagerConfig.TotalPage)//结束页码大于总页码结束页码为最后一页
{
shownStartPageIndex = pagerConfig.TotalPage - pagerConfig.DigitalLinkCount + 1;
shownEndPageIndex = pagerConfig.TotalPage; }
else
{
shownStartPageIndex = pagerConfig.CurrentPage - forward + 1;
}
}
else//起始页码从1开始
{
shownStartPageIndex = 1;
shownEndPageIndex = pagerConfig.DigitalLinkCount;
}
}
//向上…
if (shownStartPageIndex > 1)
{
RouteValues[pagerConfig.CurrentPageKey] = shownStartPageIndex - 1;
sbPager.Append("<span class=\"" + pagerConfig.CssClassPreWord + "-number\">" + getLinkHtml(Url, pagerConfig.UseAjax, pagerConfig.AjaxSuccessFunctionName, "...", actionName, controllerName, RouteValues) + "</span>");
}
//数字
for (int i = shownStartPageIndex; i <= shownEndPageIndex; i++)
{
if (i != pagerConfig.CurrentPage)
{
RouteValues[pagerConfig.CurrentPageKey] = i;
sbPager.Append("<span class=\"" + pagerConfig.CssClassPreWord + "-number\">" + getLinkHtml(Url, pagerConfig.UseAjax, pagerConfig.AjaxSuccessFunctionName, i.ToString(), actionName, controllerName, RouteValues) + "</span>");
}
else
{
sbPager.Append("<span class=\"" + pagerConfig.CssClassPreWord + "-number " + pagerConfig.CssClassPreWord + "-currentnum\">" + i.ToString() + "</span>");
}
}
//向下…
if (shownEndPageIndex < pagerConfig.TotalPage)
{
RouteValues[pagerConfig.CurrentPageKey] = shownEndPageIndex + 1;
sbPager.Append("<span class=\"" + pagerConfig.CssClassPreWord + "-number\">" + getLinkHtml(Url, pagerConfig.UseAjax, pagerConfig.AjaxSuccessFunctionName, "...", actionName, controllerName, RouteValues) + "</span>");
}
}
////数字导航结束 //下一页
if (pagerConfig.ShowPrevNextPageLink)
{
if (pagerConfig.CurrentPage < pagerConfig.TotalPage)
{
RouteValues[pagerConfig.CurrentPageKey] = pagerConfig.CurrentPage + 1;
sbPager.Append("<span class=\"" + pagerConfig.CssClassPreWord + "-btn\">" + getLinkHtml(Url, pagerConfig.UseAjax, pagerConfig.AjaxSuccessFunctionName, "下一页", actionName, controllerName, RouteValues) + "</span>");
}
else
{
sbPager.Append("<span class=\"" + pagerConfig.CssClassPreWord + "-btn\">下一页</span>");
}
}
//尾页
if (pagerConfig.ShowFirstLastPageLink)
{
if (pagerConfig.CurrentPage < pagerConfig.TotalPage)
{ RouteValues[pagerConfig.CurrentPageKey] = pagerConfig.TotalPage;
sbPager.Append("<span class=\"" + pagerConfig.CssClassPreWord + "-btn\">" + getLinkHtml(Url, pagerConfig.UseAjax, pagerConfig.AjaxSuccessFunctionName, "尾页", actionName, controllerName, RouteValues) + "</span>");
}
else
{
sbPager.Append("<span class=\"" + pagerConfig.CssClassPreWord + "-btn\">尾页</span>"); }
} //右侧记录总数信息
if (pagerConfig.ShowTotalRecord && pagerConfig.PageInfoPosition == PagerElementPosition.Right)
{
sbPager.Append("<span class=\"" + pagerConfig.CssClassPreWord + "-count\">共" + pagerConfig.TotalRecord + pagerConfig.RecordUnit + pagerConfig.RecordName + "</span>");
}
//右侧页码信息
if (pagerConfig.ShowPageInfo && pagerConfig.PageInfoPosition == PagerElementPosition.Right)
{
sbPager.Append("<span class=\"" + pagerConfig.CssClassPreWord + "-info\">第" + pagerConfig.CurrentPage + "页/共" + pagerConfig.TotalPage + "页</span>");
} //页码输入框
if (pagerConfig.ShowGoTo)
{ RouteValues[pagerConfig.CurrentPageKey] = "--pageRouteValue--";
sbPager.Append("<span class=\"" + pagerConfig.CssClassPreWord + "-goto\">转到第<input class=\"" + pagerConfig.CssClassPreWord + "-goto-input\" type=\"text\" url=\"" + Url.Action(actionName, controllerName, RouteValues) + "\" />页"); if (pagerConfig.UseAjax)
{
sbPager.Append("<input class=\"" + pagerConfig.CssClassPreWord + "-goto-submit\" type=\"button\" value=\"GO\" onclick=\"$.post( $(this).prev().attr('url').replace('--pageRouteValue--',$(this).prev().val())," + pagerConfig.AjaxSuccessFunctionName + ")\" /></span>");
}
else
{
sbPager.Append("<input class=\"" + pagerConfig.CssClassPreWord + "-goto-submit\" type=\"button\" value=\"GO\" onclick=\"window.location = $(this).prev().attr('url').replace('--pageRouteValue--',$(this).prev().val());\" /></span>");
}
}
//ajax分页回调函数
if (pagerConfig.UseAjax)
{
if (pagerConfig.AutoGenarateAjaxSuccessFunction)
{
sbPager.Append("<script type=\"text/javascript\">function " + pagerConfig.AjaxSuccessFunctionName + "(data){$('#" + pagerConfig.AjaxUpdateTargetID + "').html(data);}</script>");
}
}
sbPager.Append("</div>");
return MvcHtmlString.Create(sbPager.ToString());
} #endregion }
}

调用

     public ActionResult Index()
{
int pageSize = 4;
int allCount = db.Movies.Count();
ViewBag.Num = allCount;
ViewBag.PageSize = pageSize;
int pageIndex, startIndex, endIndex;
//获取开始和结束的记录序号
PagerHelper.GetStartAndEndIndex(allCount, pageSize, out pageIndex, out startIndex, out endIndex);
//调用存储过程返回指定序号范围的数据
// return View(db.SelectUserList(startIndex, endIndex)); var sear = (from m in db.Movies where m.ID >= startIndex && m.ID <= endIndex select m).ToList();
return View(sear);
//return View(db.Movies.ToList());
}

@Html.Pager("Index", "Movies", new { }, new PagerConfig { TotalRecord = ViewBag.Num, PageSize = ViewBag.PageSize })

C#_Ajax_分页的更多相关文章

  1. django——文件上传_分页_ajax_富文本_celery

    上传文件 概述 当Django在处理文件上传时,文件的数据被存储在request.FILES属性中 FILES只有在请求的方法为POST且提交的form表单带有enctype="multip ...

  2. 记一次SQLServer的分页优化兼谈谈使用Row_Number()分页存在的问题

    最近有项目反应,在服务器CPU使用较高的时候,我们的事件查询页面非常的慢,查询几条记录竟然要4分钟甚至更长,而且在翻第二页的时候也是要这么多的时间,这肯定是不能接受的,也是让现场用SQLServerP ...

  3. js实现前端分页页码管理

    用JS实现前端分页页码管理,可以很美观的区分页码显示(这也是参考大多数网站的分页页码展示),能够有很好的用户体验,这也是有业务需要就写了一下,还是新手,经验不足,欢迎指出批评! 首先先看效果图: 这是 ...

  4. JdbcTemplate+PageImpl实现多表分页查询

    一.基础实体 @MappedSuperclass public abstract class AbsIdEntity implements Serializable { private static ...

  5. MVC如何使用开源分页插件shenniu.pager.js

    最近比较忙,前期忙公司手机端接口项目,各种开发+调试+发布现在几乎上线无问题了:虽然公司项目忙不过在期间抽空做了两件个人觉得有意义的事情,一者使用aspnetcore开发了个人线上项目(要说线上其实只 ...

  6. NET Core-TagHelper实现分页标签

    这里将要和大家分享的是学习总结使用TagHelper实现分页标签,之前分享过一篇使用HtmlHelper扩展了一个分页写法地址可以点击这里http://www.cnblogs.com/wangrudo ...

  7. 套用JQuery EasyUI列表显示数据、分页、查询

    声明,本博客从csdn搬到cnblogs博客园了,以前的csdn不再更新,朋友们可以到这儿来找我的文章,更多的文章会发表,谢谢关注! 有时候闲的无聊,看到extjs那么肥大,真想把自己的项目改了,最近 ...

  8. php实现的分页类

    php分页类文件: <?php /** file: page.class.php 完美分页类 Page */ class Page { private $total; //数据表中总记录数 pr ...

  9. C#关于分页显示

    ---<PS:本人菜鸟,大手子还请高台贵手> 以下是我今天在做分页时所遇到的一个分页显示问题,使用拼写SQL的方式写的,同类型可参考哦~ ------------------------- ...

随机推荐

  1. Android Service即四大组件总结

    原文转载自:http://www.cnblogs.com/bravestarrhu/archive/2012/05/02/2479461.html Service 服务: 一个Service 是一段长 ...

  2. 【JSP】让HTML和JSP页面不缓存从Web服务器上重新获取页面

    用户退出后,如果点击浏览器上的后退按钮,Web应用将不能正确保护受保护的页面——在Session销毁后(用户退出)受保护的JSP页重新在浏览器中显示出来. 然而,如果用户点击返回页面上的任何链接,We ...

  3. 【转】Android开发20——单个监听器监听多个按钮点击事件

    原文网址:http://woshixy.blog.51cto.com/5637578/1093936 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律 ...

  4. 【转】使用NDK生成native C/C++的可执行程序

    原文网址:http://www.linuxidc.com/Linux/2011-08/40901.htm 众所周知, NDK可以生成lib,让java程序通过jni来调用,其实,NDK也可以生成C/C ...

  5. linux 打开远程samba服务器

    sudo mount -t cifs //10.104.*.*data /home/leeyoung/samba/ -o username=123,password=123

  6. Linux 多线程编程--线程退出

    今天分析项目中进程中虚存一直增长问题,运行10个小时虚存涨到121G ,RSS占用为16G 非常恐怖. Valgrind测试无内存泄漏. 内存32G 64bit系统信息如下: Linux线程使用方式是 ...

  7. KNN及其改进算法的python实现

    一. 马氏距离 我们熟悉的欧氏距离虽然很有用,但也有明显的缺点.它将样品的不同属性(即各指标或各变量)之间的差别等同看待,这一点有时不能满足实际要求.例如,在教育研究中,经常遇到对人的分析和判别,个体 ...

  8. ACM2026

    /* 首字母变大写 Problem Description 输入一个英文句子,将每个单词的第一个字母改成大写字母.   Input 输入数据包含多个测试实例,每个测试实例是一个长度不超过100的英文句 ...

  9. c# DataTable中使用排序的时候注意事项

    背景: 在项目使用DataTable的时候,使用到了其中ExtendedProperties的属性,但是之后出了问题:在排序之后ExtendedProperties的自定义的键值丢失了,代码如下: 误 ...

  10. 扯扯淡,写个更快的memcpy

    写代码有时候和笃信宗教一样,一旦信仰崩溃,是最难受的事情.早年我读过云风的一篇<VC 对 memcpy 的优化>,以及<Efficiency geek 2: copying data ...