当前位置:软件学习 > Flash >>

import flash.events.Event;

[csharp]  DataView DV = dtLineTypeURL.DefaultView; 
DataTable dtTmp = DV.ToTable("tb1", true, "LineType"); // 对 LineType 使用distinct  
dtLineTypeURL = dtTmp; 

     DataView DV = dtLineTypeURL.DefaultView;
     DataTable dtTmp = DV.ToTable("tb1", true, "LineType"); // 对 LineType 使用distinct
     dtLineTypeURL = dtTmp;或

 

[csharp]  dtLineTypeURL = dtLineTypeURL.DefaultView.ToTable(true, "LineType"); // 对 LineType 使用distinct 

    dtLineTypeURL = dtLineTypeURL.DefaultView.ToTable(true, "LineType"); // 对 LineType 使用distinct
注意:通过以上方式 得到的dataTable 仅有LineType这一列,其它列都被丢弃了。

 


如果 只是希望 针对某一列做 distinct, 其它列保留,则用下面的:


[csharp]  #region 删除DataTable重复列,类似distinct  
/// <summary>  
/// 删除DataTable重复列,类似distinct  
/// </summary>  
/// <param name="dt">DataTable</param>  
/// <param name="Field">字段名</param>  
/// <returns></returns>  
public static DataTable DeleteSameRow(DataTable dt, string Field) 

    ArrayList indexList = new ArrayList(); 
    // 找出待删除的行索引  
    for (int i = 0; i < dt.Rows.Count - 1; i++) 
    { 
        if (!indexList.Contains(i)) 
        { 
            for (int j = i + 1; j < dt.Rows.Count; j++) 
            { 
                if (dt.Rows[i][Field].ToString() == dt.Rows[j][Field].ToString()) 
                { 
                    indexList.Add(j); 
                } 
            } 
        } 
    } 
 
    indexList.Sort(); 
 
    // 根据待删除索引列表删除行  
    for (int i = indexList.Count - 1; i >= 0; i--) 
    { 
        int index = Convert.ToInt32(indexList[i]); 
        dt.Rows.RemoveAt(index); 
    } 
    return dt; 

 
#endregion  

       #region 删除DataTable重复列,类似distinct
       /// <summary>
       /// 删除DataTable重复列,类似distinct
       /// </summary>
       /// <param name="dt">DataTable</param>
       /// <param name="Field">字段名</param>
       /// <returns></returns>
       public static DataTable DeleteSameRow(DataTable dt, string Field)
       {
           ArrayList indexList = new ArrayList();
           // 找出待删除的行索引
           for (int i = 0; i < dt.Rows.Count - 1; i++)
           {
               if (!indexList.Contains(i))
               {
                   for (int j = i + 1; j < dt.Rows.Count; j++)
                   {
                       if (dt.Rows[i][Field].ToString() == dt.Rows[j][Field].ToString())
                       {
                           indexList.Add(j);
                       }
                   }
               }
           }

           indexList.Sort();

           // 根据待删除索引列表删除行
           for (int i = indexList.Count - 1; i >= 0; i--)
           {
               int index = Convert.ToInt32(indexList[i]);
               dt.Rows.RemoveAt(index);
           }
           return dt;
       }
 
       #endregion

调用方法:

  dtLineTypeURL = Common.DeleteSameRow(dtLineTypeURL, "LineType");// 对 LineType 使用distinct

 

补充:软件开发 , C# ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,