ASPNETDataset列名格式化
创始人
2024-09-20 09:30:36
0

在 ASP.NET 的 DataSet 中,列的名称默认情况下是不区分大小写的。在某些情况下,为了更方便地访问和识别列,可能需要将列名格式化为一致的大小写。下面是一种实现该功能的方法:

  1. 创建一个自定义的 DataSet 类,继承于系统自带的 DataSet 类。

  2. 在自定义的 DataSet 类中,重载 ColumnsChanged 事件处理函数。

  3. 在 ColumnsChanged 事件处理函数中,遍历 DataSet 的所有表和列,将列名格式化为一致的大小写。

示例代码如下:


public class MyDataSet : DataSet
{
   public MyDataSet() : base()
   {
      ColumnChanging += new System.Data.DataColumnChangeEventHandler(MyDataSet_ColumnChanging);
      ColumnsChanged += new System.EventHandler(MyDataSet_ColumnsChanged);
   }

   void MyDataSet_ColumnChanging(object sender, DataColumnChangeEventArgs e)
   {
      string newColumnName = e.ProposedValue.ToString();
      if (string.IsNullOrWhiteSpace(newColumnName))
         throw new ArgumentNullException("Column name can not be empty.");

      // Rename the duplicated columns by appending _1, _2, _3 and so on.
      int index = 1;
      while (e.Row.Table.Columns.Contains(newColumnName))
      {
         newColumnName = e.ProposedValue.ToString() + "_" + index.ToString();
         index++;
      }
      e.ProposedValue = newColumnName;
   }

   void MyDataSet_ColumnsChanged(object sender, EventArgs e)
   {
      // Format all the column names to the same case.
      foreach (DataTable table in Tables)
      {
         var columnNames = table.Columns.Cast().Select(c => c.ColumnName).Distinct();
         foreach (var columnName in columnNames)
         {
            var columns = table.Columns.Cast().Where(c => c.ColumnName.Equals(columnName, StringComparison.OrdinalIgnoreCase));
            if (columns.Count() > 1)
            {
               // There are duplicated columns with different cases.
               int index = 1;
               foreach (var column in columns)
               {
                  column.ColumnName = columnName + "_" + index.ToString();
                  index++;
               }
            }
            else
            {
               var column = columns.Single();
               column.ColumnName = columnName;
            }
         }
      }
   }
}

在上述示例代码中,我们通过重载 ColumnChanging 事件和 ColumnsChanged 事件实现了 DataSet 列名的格式化。在 ColumnChanging 事件处理函数中,我们将空列名和重复列名重命名为“columnName_1”,“columnName_2”等。在 ColumnsChanged 事件处理函数中,我们

相关内容

热门资讯

我来分享!pokemmo脚本手... 我来分享!pokemmo脚本手机版,智星菠萝辅助,切实是真的有挂(有挂教程)1、任何透视是真的假的的...
更值得关注的是!wpk德州局透... 更值得关注的是!wpk德州局透视,德普之星透视辅助软件是真的吗,竟然真的有挂(真实有挂)1、德普之星...
程序员教你!wpk辅助是什么,... 程序员教你!wpk辅助是什么,aapoker辅助器怎么用,果然有挂(今日头条)1、任何透视是真的假的...
连日来!wepoker透视挂底... 连日来!wepoker透视挂底牌,德扑之星透视,一直是有挂(有挂助手)1、德扑之星透视免费脚本咨询教...
我来教教大家!wepoker数... 我来教教大家!wepoker数据分析,wpk免费辅助,本来是真的有挂(有挂方式)1、进入到是否有挂之...
据了解!红龙poker作弊指令... 您好,德普之星辅助器app这款游戏可以开挂的,确实是有挂的,需要了解加去威信【136704302】很...
一分钟揭秘!德普之星透视辅助软... 一分钟揭秘!德普之星透视辅助软件,wejoker内置辅助,竟然有挂(的确有挂)1、破解器简单,机器人...
出乎意料的是!wejoker手... 出乎意料的是!wejoker手机版透视脚本,智星菠萝透视,切实确实有挂(有挂教学)1、智星菠萝透视透...
必看攻略!wepoker辅助透... 必看攻略!wepoker辅助透视,wepoker游戏下载,本来是真的有挂(真的有挂)暗藏猫腻,小编详...
技巧辅助挂!大菠萝免费辅助,德... 技巧辅助挂!大菠萝免费辅助,德普之星辅助软件,其实真的有挂(有挂方略)1、该软件可以轻松地帮助玩家将...