• DataTable方法 和 性能


    列的循序调整

    View Code
     1         Private Function AdjustFirstColumn(ByVal dsData As DataSet, ByVal firstColName As String) As DataSet
     2             Dim bl As Boolean = False
     3             For Each dt As DataTable In dsData.Tables
     4                 For Each drpt As DataColumn In dt.Columns
     5                     If drpt.ColumnName = firstColName Then
     6                         bl = True
     7                     End If
     8                 Next
     9                 If bl Then
    10                     dt.Columns(firstColName).SetOrdinal(0)
    11                 End If
    12             Next
    13             Return dsData
    14 
    15         End Function

     按一定数量行进行切割

     

    View Code
     1         Private Function splitDataTable(ByVal dt As DataTable, ByVal ColNumb As Integer) As DataSet
     2 
     3             Dim leftThird As Integer = dt.Rows.Count Mod ColNumb
     4             Dim timesThird As Integer = (dt.Rows.Count - leftThird) / ColNumb    这个有4舍五入现象 所以 要减掉 这个 余数 先,再开始整除
     5 
     6             Dim ds As New DataSet()
     7 
     8             For i As Integer = 1 To timesThird
     9                 Dim dt1 As DataTable = dt.Clone()
    10                 Dim j As Integer
    11 
    12                 For j = (i - 1) * ColNumb To (i * ColNumb - 1)
    13                     dt1.Rows.Add(dt.Rows(j).ItemArray)
    14                 Next
    15 
    16 
    17 
    18                 dt1.TableName = dt.TableName + i.ToString()
    19                 ds.Tables.Add(dt1)
    20             Next
    21 
    22             If leftThird > 0 Then
    23                 Dim dt2 As DataTable = dt.Clone()
    24                 Dim j As Integer
    25 
    26                 For j = timesThird * ColNumb To leftThird + timesThird * ColNumb - 1
    27                     dt2.Rows.Add(dt.Rows(j).ItemArray)
    28                 Next
    29 
    30 
    31 
    32                 dt2.TableName = dt.TableName + (timesThird + 1).ToString()
    33                 ds.Tables.Add(dt2)
    34             End If
    35             Return ds
    36         End Function

     按某列进行分组

    View Code
     1 IEnumerable<IGrouping<string, DataRow>> result = dt.Rows.Cast<DataRow>().GroupBy<DataRow, string>(dr => dr[strGroupBy1].ToString());                    
     2    int j = 0;
     3    foreach (IGrouping<string, DataRow> ig in result)
     4   {
     5       DataTable dt1 = dt.Clone();
     6       j++;
     7       foreach (var dr_gp1 in ig){
     8             dt1.Rows.Add(dr_gp1.ItemArray);                                        
     9        }
    10        dt1.TableName = dt.TableName + j.ToString();
    11                                    
    12        if (dt1.Rows.Count > 0)
    13        {
    14           dsGroup1.Tables.Add(dt1);
    15        }               

     过滤

    View Code
    1     dt.DefaultView.RowFilter = "colname=" + xxxx;
    2     if (dt.DefaultView.Count > 0)
    3     {
    4         string str = dt.DefaultView[0]["ColumnsName"].ToString()); 
    5     }
  • 相关阅读:
    1.时间复杂度与空间复杂度分析
    数据结构与算法之重头再来
    MySQL时间字段与业务代码取出的时间不一致问题
    [redtiger]在线靶场level3
    win10 卡顿 MsMpEng.exe进程
    react 笔记 局部打印 print
    react table td 自动换行
    kali apt-get update release文件过期
    ubuntu怎么切换到root用户,切换到root账号方法
    winscp连接kali 使用预置密码验证 拒绝访问
  • 原文地址:https://www.cnblogs.com/sandy_liao/p/2252947.html
Copyright © 2020-2023  润新知