C# .Net中DataTable缓存的实例

上次《C# Datalist 多列及Image中图片路径的绑定》提到过公司的三放心评选活动的海选,每个用户打开页面的时候,待评选的人员都是随机排序的,因为当时没有用Ajax的技术,用的还是老Webform页面刷新,所以每次用户提交投票以后,页面上的待评选人员都会重新随机排序。昨天再次搞第2季度的评选,我也懒得修改为Ajax的交互式设计,只是针对这个页面进行了随机排序的优化:每个用户登录后第一次打开页面是随机排序,后面再次打开(刷新)页面都保持第一次的排序。因为我没有使用数据查询语句的动态排序,而是在读取数据库后,DataTable动态增加了一列RowId,然后随机生成GUID,根据此列动态的排序,所以这里需要保存RowId的数据到Cache。

代码如下,仅供参考。这个代码比一般的只是Cache完整的DataTable要复杂些。

// 动态增加随机排序编号 dt.Columns.Add(“RowId”, Type.GetType(“System.String”)); string rowId = string.Empty; if (Cache[cacheName] != null) { // Create DataTable From Cache DataTable dtRowId = (DataTable)Cache[cacheName]; for (int i = 0; i < dt.Rows.Count; i++) { rowId = dtRowId.Rows[i][“RowId”].ToString(); dt.Rows[i][dt.Columns.Count – 1] = rowId; } } else { // Create DataTable From DataBase DataTable dtRowId = new DataTable(); dtRowId.Columns.Add(“RowId”, Type.GetType(“System.String”)); for (int i = 0; i < dt.Rows.Count; i++) { rowId = Guid.NewGuid().ToString(); dt.Rows[i][dt.Columns.Count – 1] = rowId; // 保存到缓存表 DataRow drRowId = dtRowId.NewRow(); drRowId[“RowId”] = rowId; dtRowId.Rows.Add(drRowId); } // Push DataTable To Cache Cache[cacheName] = dtRowId; }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券