首页 asp.net DataTable相关操作集锦(筛选,取前N条数据,去重复行,获取指定列数据等)

asp.net DataTable相关操作集锦(筛选,取前N条数据,去重复行,获取指定列数据等)

举报
开通vip

asp&#46;net DataTable相关操作集锦&#40;筛选,取前N条数据,去重复行,获取指定列数据等&#41;asp.net DataTable相关操作集锦(筛选,取前N条数据,去重复行,获取指定列数据等) ?精品文档? asp.net DataTable相关操作集锦(筛选,取前N条数据,去重复行,获取指定列数据 等) 本文实例总结了asp.net DataTable相关操作。分享给大家供大家参考,具体如下, #region DataTable筛选,排序返回符合条件行组成的新DataTable或直接用DefaultView按条件返回 /// <summary /// DataTable筛选,排序返回符合条...

asp&#46;net DataTable相关操作集锦&#40;筛选,取前N条数据,去重复行,获取指定列数据等&#41;
asp.net DataTable相关操作集锦(筛选,取前N条数据,去重复行,获取指定列数据等) ?精品文档? asp.net DataTable相关操作集锦(筛选,取前N条数据,去重复行,获取指定列数据 等) 本文实例总结了asp.net DataTable相关操作。分享给大家供大家参考,具体如下, #region DataTable筛选,排序返回符合条件行组成的新DataTable或直接用DefaultView按条件返回 /// <summary /// DataTable筛选,排序返回符合条件行组成的新DataTable或直接用DefaultView按条件返回 /// eg:SortExprDataTable(dt,”Sex=‘男’”,”Time Desc”,1) /// </summary /// <param name=“dt”传入的DataTable</param /// <param name=“strExpr”筛选条件</param /// <param name=“strSort”排序条件</param /// <param name=“mode”1,直接用DefaultView按条件返回,效率较高;2,DataTable筛选,排序返回符合条件行组成的新DataTable</param public static DataTable SortDataTable(DataTable dt, string strExpr, string strSort, int mode) {   switch (mode) 1 / 48 ?精品文档?   {     case 1:       //方法一 直接用DefaultView按 条件返回       dt.DefaultView.RowFilter = strExpr;       dt.DefaultView.Sort = strSort;       return dt;     case 2:       //方法二 DataTable筛选,排序 返回符合条件行组成的新DataTable       DataTable dt1 = new DataTable();       DataRow[] GetRows = dt.Select(strExpr, strSort);       //复制DataTable dt结构不包含 数据       dt1 = dt.Clone();       foreach (DataRow row in GetRows)       {         2 / 48 ?精品文档? dt1.Rows.Add(row.ItemArray);       }       return dt1;     default:       return dt;   } } #endregion --------------------------------------- #region 获取DataTable前几条数据 /// <summary /// 获取DataTable前几条数据 /// </summary /// <param name=“TopItem”前N条数据</param /// <param name=“oDT”源DataTable</param /// <returns</returns public static DataTable DtSelectTop(int TopItem, DataTable oDT) {   if (oDT.Rows.Count < TopItem) return oDT;   DataTable NewTable = oDT.Clone();   DataRow[] rows = oDT.Select(“1=1”); 3 / 48 ?精品文档?   for (int i = 0; i < TopItem; i++)   {     NewTable.ImportRow((DataRow)rows[i]);   }   return NewTable; } #endregion ---------------------------------------------- #region 获取DataTable中指定列的数据 /// <summary /// 获取DataTable中指定列的数据 /// </summary /// <param name=“dt”数据源</param /// <param name=“tableName”新的DataTable的名词 </param /// <param name=“strColumns”指定的列名集合 </param /// <returns返回新的DataTable</returns public static DataTable GetTableColumn(DataTable dt, string tableName, params string[] strColumns) { 4 / 48 ?精品文档?   DataTable dtn = new DataTable();   if (dt == null)   {     throw new ArgumentNullException(“参 数dt不能为null”);   }   try   {     dtn = dt.DefaultView.ToTable(tableName, true, strColumns);   }   catch (Exception e)   {     throw new Exception(e.Message);   }   return dtn; } #endregion -------------------------------------------- using System; using System.Collections.Generic; using System.Linq; 5 / 48 ?精品文档? using System.Data; using System.Collections; using System.Text; namespace GuanEasy {  /// <summary   /// DataSet助手   /// </summary   public class DataSetHelper   {     private class FieldInfo     {       public string RelationName;       public string FieldName;       public string FieldAlias;       public string Aggregate;     }     private DataSet ds;     private ArrayList m_FieldInfo;     private string m_FieldList;     private ArrayList GroupByFieldInfo;     private string GroupByFieldList; 6 / 48 ?精品文档?     public DataSet DataSet     {       get { return ds; }     }     #region Construction     public DataSetHelper()     {       ds = null;     }     public DataSetHelper(ref DataSet dataSet)     {       ds = dataSet;     }     #endregion     #region Private Methods     private bool ColumnEqual(object objectA, object objectB)     {       if ( objectA == DBNull.Value && objectB == DBNull.Value )       { 7 / 48 ?精品文档?         return true;       }       if ( objectA == DBNull.Value || objectB == DBNull.Value )       {         return false;       }       return ( objectA.Equals( objectB ) );     }     private bool RowEqual(DataRow rowA, DataRow rowB, DataColumnCollection columns)     {       bool result = true;       for ( int i = 0; i < columns.Count; i++ )       {         result &= ColumnEqual( rowA[ columns[ i ].ColumnName ], rowB[ columns[ i ].ColumnName ] );       }       return result; 8 / 48 ?精品文档?     }     private void ParseFieldList(string fieldList, bool allowRelation)     {       if ( m_FieldList == fieldList )       {         return;       }       m_FieldInfo = new ArrayList();       m_FieldList = fieldList;       FieldInfo Field;       string[] FieldParts;       string[] Fields = fieldList.Split( ‘,’ );       for ( int i = 0; i <= Fields.Length - 1; i++ )       {         Field = new FieldInfo();         FieldParts = Fields[ i ].Trim().Split( ‘ ‘ );         switch ( FieldParts.Length ) 9 / 48 ?精品文档?         {           case 1:             //to be set at the end of the loop             break;           case 2:             Field.FieldAlias = FieldParts[ 1 ];             break;           default:             return;         }         FieldParts = FieldParts[ 0 ].Split( ‘.’ );         switch ( FieldParts.Length )         {           case 1:             Field.FieldName = FieldParts[ 0 ];             break;           case 2: 10 / 48 ?精品文档?             if ( allowRelation == false )             {               return;             }             Field.RelationName = FieldParts[ 0 ].Trim();             Field.FieldName = FieldParts[ 1 ].Trim();             break;           default:             return;         }         if ( Field.FieldAlias == null )         {           Field.FieldAlias = Field.FieldName;         }         m_FieldInfo.Add( Field );       } 11 / 48 ?精品文档?     }     private DataTable CreateTable(string tableName, DataTable sourceTable, string fieldList)     {       DataTable dt;       if ( fieldList.Trim() == ““ )       {         dt = sourceTable.Clone();         dt.TableName = tableName;       }       else       {         dt = new DataTable( tableName );         ParseFieldList( fieldList, false );         DataColumn dc;         foreach ( FieldInfo Field in m_FieldInfo )         { 12 / 48 ?精品文档?           dc = sourceTable.Columns[ Field.FieldName ];           DataColumn column = new DataColumn();           column.ColumnName = Field.FieldAlias;           column.DataType = dc.DataType;           column.MaxLength = dc.MaxLength;           column.Expression = dc.Expression;           dt.Columns.Add( column );         }       }       if ( ds != null )       {         ds.Tables.Add( dt );       }       return dt;     } 13 / 48 ?精品文档?     private void InsertInto(DataTable destTable, DataTable sourceTable,                 string fieldList, string rowFilter, string sort)     {       ParseFieldList( fieldList, false );       DataRow[] rows = sourceTable.Select( rowFilter, sort );       DataRow destRow;       foreach ( DataRow sourceRow in rows )       {         destRow = destTable.NewRow();         if ( fieldList == ““ )         {           foreach ( DataColumn dc in destRow.Table.Columns )           {             if ( dc.Expression == ““ )             { 14 / 48 ?精品文档?               destRow[ dc ] = sourceRow[ dc.ColumnName ];             }           }         }         else         {           foreach ( FieldInfo field in m_FieldInfo )           {             destRow[ field.FieldAlias ] = sourceRow[ field.FieldName ];           }         }         destTable.Rows.Add( destRow );       }     }     private void ParseGroupByFieldList(string FieldList)     {       if ( GroupByFieldList == 15 / 48 ?精品文档? FieldList )       {         return;       }       GroupByFieldInfo = new ArrayList();       FieldInfo Field;       string[] FieldParts;       string[] Fields = FieldList.Split( ‘,’ );       for ( int i = 0; i <= Fields.Length - 1; i++ )       {         Field = new FieldInfo();         FieldParts = Fields[ i ].Trim().Split( ‘ ‘ );         switch ( FieldParts.Length )         {           case 1:             //to be set at the end of the loop 16 / 48 ?精品文档?             break;           case 2:             Field.FieldAlias = FieldParts[ 1 ];             break;           default:             return;         }         FieldParts = FieldParts[ 0 ].Split( ‘(‘ );         switch ( FieldParts.Length )         {           case 1:             Field.FieldName = FieldParts[ 0 ];             break;           case 2:             Field.Aggregate = FieldParts[ 0 ].Trim().ToLower();             Field.FieldName = FieldParts[ 1 ].Trim( ‘ ‘, ‘)’ ); 17 / 48 ?精品文档?             break;           default:             return;         }         if ( Field.FieldAlias == null )         {           if ( Field.Aggregate == null )           {             Field.FieldAlias = Field.FieldName;           }           else           {             Field.FieldAlias = Field.Aggregate + “of” + Field.FieldName;           }         }         GroupByFieldInfo.Add( Field );       } 18 / 48 ?精品文档?       GroupByFieldList = FieldList;     }     private DataTable CreateGroupByTable(string tableName, DataTable sourceTable, string fieldList)     {       if ( fieldList == null || fieldList.Length == 0 )       {         return sourceTable.Clone();       }       else       {         DataTable dt = new DataTable( tableName );         ParseGroupByFieldList( fieldList );         foreach ( FieldInfo Field in GroupByFieldInfo )         {           DataColumn dc 19 / 48 ?精品文档? = sourceTable.Columns[ Field.FieldName ];           if ( Field.Aggregate == null )           {             dt.Columns.Add( Field.FieldAlias, dc.DataType, dc.Expression );           }           else           {             dt.Columns.Add( Field.FieldAlias, dc.DataType );           }         }         if ( ds != null )         {           ds.Tables.Add( dt );         }         return dt;       }     } 20 / 48 ?精品文档?     private void InsertGroupByInto(DataTable destTable, DataTable sourceTable, string fieldList,                     string rowFilter, string groupBy)     {       if ( fieldList == null || fieldList.Length == 0 )       {         return;       }       ParseGroupByFieldList( fieldList );       ParseFieldList( groupBy, false );       DataRow[] rows = sourceTable.Select( rowFilter, groupBy );       DataRow lastSourceRow = null, destRow = null;       bool sameRow;       int rowCount = 0;       foreach ( DataRow sourceRow in rows ) 21 / 48 ?精品文档?       {         sameRow = false;         if ( lastSourceRow != null )         {           sameRow = true;           foreach ( FieldInfo Field in m_FieldInfo )           {             if ( !ColumnEqual( lastSourceRow[ Field.FieldName ], sourceRow[ Field.FieldName ] ) )             {               sameRow = false;               break;             }           }           if ( !sameRow )           {             22 / 48 ?精品文档? destTable.Rows.Add( destRow );           }         }         if ( !sameRow )         {           destRow = destTable.NewRow();           rowCount = 0;         }         rowCount += 1;         foreach ( FieldInfo field in GroupByFieldInfo )         {           switch ( field.Aggregate.ToLower() )           {             case null:             case ““:             case “last”:               destRow[ field.FieldAlias ] = sourceRow[ field.FieldName ]; 23 / 48 ?精品文档?               break;             case “first”:               if ( rowCount == 1 )               {                 destRow[ field.FieldAlias ] = sourceRow[ field.FieldName ];               }               break;             case “count”:               destRow[ field.FieldAlias ] = rowCount;               break;             case “sum”:               24 / 48 ?精品文档? destRow[ field.FieldAlias ] = Add( destRow[ field.FieldAlias ], sourceRow[ field.FieldName ] );               break;             case “max”:               destRow[ field.FieldAlias ] = Max( destRow[ field.FieldAlias ], sourceRow[ field.FieldName ] );               break;             case “min”:               if ( rowCount == 1 )               {                 destRow[ field.FieldAlias ] = sourceRow[ field.FieldName ];               } 25 / 48 ?精品文档?               else               {                 destRow[ field.FieldAlias ] = Min( destRow[ field.FieldAlias ], sourceRow[ field.FieldName ] );               }               break;           }         }         lastSourceRow = sourceRow;       }       if ( destRow != null )       {         destTable.Rows.Add( destRow );       }     }     private object Min(object a, object b) 26 / 48 ?精品文档?     {       if ( ( a is DBNull ) || ( b is DBNull ) )       {         return DBNull.Value;       }       if ( ( (IComparable) a ).CompareTo( b ) == -1 )       {         return a;       }       else       {         return b;       }     }     private object Max(object a, object b)     {       if ( a is DBNull )       {         return b;       } 27 / 48 ?精品文档?       if ( b is DBNull )       {         return a;       }       if ( ( (IComparable) a ).CompareTo( b ) == 1 )       {         return a;       }       else       {         return b;       }     }     private object Add(object a, object b)     {       if ( a is DBNull )       {         return b;       }       if ( b is DBNull )       { 28 / 48 ?精品文档?         return a;       }       return ( (decimal) a + (decimal) b );     }     private DataTable CreateJoinTable(string tableName, DataTable sourceTable, string fieldList)     {       if ( fieldList == null )       {         return sourceTable.Clone();       }       else       {         DataTable dt = new DataTable( tableName );         ParseFieldList( fieldList, true );         foreach ( FieldInfo field in m_FieldInfo ) 29 / 48 ?精品文档?         {           if ( field.RelationName == null )           {             DataColumn dc = sourceTable.Columns[ field.FieldName ];             dt.Columns.Add( dc.ColumnName, dc.DataType, dc.Expression );           }           else           {             DataColumn dc = sourceTable.ParentRelations[ field.RelationName ].Parent Table.Columns[ field.FieldName ];             dt.Columns.Add( dc.ColumnName, dc.DataType, dc.Expression );           }         }         if ( ds != null ) 30 / 48 ?精品文档?         {           ds.Tables.Add( dt );         }         return dt;       }     }     private void InsertJoinInto(DataTable destTable, DataTable sourceTable,                   string fieldList, string rowFilter, string sort)     {       if ( fieldList == null )       {         return;       }       else       {         ParseFieldList( fieldList, true );         DataRow[] Rows = sourceTable.Select( rowFilter, sort ); 31 / 48 ?精品文档?         foreach ( DataRow SourceRow in Rows )         {           DataRow DestRow = destTable.NewRow();           foreach ( FieldInfo Field in m_FieldInfo )           {             if ( Field.RelationName == null )             {               DestRow[ Field.FieldName ] = SourceRow[ Field.FieldName ];             }             else             {               DataRow ParentRow = SourceRow.GetParentRow( Field.RelationName );               DestRow[ Field.FieldName ] = 32 / 48 ?精品文档? ParentRow[ Field.FieldName ];             }           }           destTable.Rows.Add( DestRow );         }       }     }     #endregion     #region SelectDistinct / Distinct     /// <summary     /// 按照fieldName从sourceTable中选 择出不重复的行,     /// 相当于select distinct fieldName from sourceTable     /// </summary     /// <param name=“tableName”表名 </param     /// <param name=“sourceTable”源 DataTable</param     /// <param name=“fieldName”列名 </param 33 / 48 ?精品文档?     /// <returns一个新的不含重复行的 DataTable,列只包括fieldName指明的列</returns     public DataTable SelectDistinct(string tableName, DataTable sourceTable, string fieldName)     {       DataTable dt = new DataTable( tableName );       dt.Columns.Add( fieldName, sourceTable.Columns[ fieldName ].DataType );       object lastValue = null;       foreach ( DataRow dr in sourceTable.Select( ““, fieldName ) )       {         if ( lastValue == null || !( ColumnEqual( lastValue, dr[ fieldName ] ) ) )         {           lastValue = dr[ fieldName ];           dt.Rows.Add( new object[]{lastValue} );         }       } 34 / 48 ?精品文档?       if ( ds != null && !ds.Tables.Contains( tableName ) )       {         ds.Tables.Add( dt );       }       return dt;     }     /// <summary     /// 按照fieldName从sourceTable中选 择出不重复的行,     /// 相当于select distinct fieldName1,fieldName2,,fieldNamen from sourceTable     /// </summary     /// <param name=“tableName”表名 </param     /// <param name=“sourceTable”源 DataTable</param     /// <param name=“fieldNames”列名数 组</param     /// <returns一个新的不含重复行的 DataTable,列只包括fieldNames中指明的列</returns     public DataTable SelectDistinct(string 35 / 48 ?精品文档? tableName, DataTable sourceTable, string[] fieldNames)     {       DataTable dt = new DataTable( tableName );       object[] values = new object[fieldNames.Length];       string fields = ““;       for ( int i = 0; i < fieldNames.Length; i++ )       {         dt.Columns.Add( fieldNames[ i ], sourceTable.Columns[ fieldNames[ i ] ].DataType );         fields += fieldNames[ i ] + “,”;       }       fields = fields.Remove( fields.Length - 1, 1 );       DataRow lastRow = null;       foreach ( DataRow dr in sourceTable.Select( ““, fields ) )       { 36 / 48 ?精品文档?         if ( lastRow == null || !( RowEqual( lastRow, dr, dt.Columns ) ) )         {           lastRow = dr;           for ( int i = 0; i < fieldNames.Length; i++ )           {             values[ i ] = dr[ fieldNames[ i ] ];           }           dt.Rows.Add( values );         }       }       if ( ds != null && !ds.Tables.Contains( tableName ) )       {         ds.Tables.Add( dt );       }       return dt;     }     /// <summary 37 / 48 ?精品文档?     /// 按照fieldName从sourceTable中选 择出不重复的行,     /// 并且包含sourceTable中所有的列。     /// </summary     /// <param name=“tableName”表名 </param     /// <param name=“sourceTable”源表 </param     /// <param name=“fieldName”字段 </param     /// <returns一个新的不含重复行的 DataTable</returns     public DataTable Distinct(string tableName, DataTable sourceTable, string fieldName)     {       DataTable dt = sourceTable.Clone();       dt.TableName = tableName;       object lastValue = null;       foreach ( DataRow dr in sourceTable.Select( ““, fieldName ) )       { 38 / 48 ?精品文档?         if ( lastValue == null || !( ColumnEqual( lastValue, dr[ fieldName ] ) ) )         {           lastValue = dr[ fieldName ];           dt.Rows.Add( dr.ItemArray );         }       }       if ( ds != null && !ds.Tables.Contains( tableName ) )       {         ds.Tables.Add( dt );       }       return dt;     }     /// <summary     /// 按照fieldNames从sourceTable中选 择出不重复的行,     /// 并且包含sourceTable中所有的列。     /// </summary     /// <param name=“tableName”表名 39 / 48 ?精品文档? </param     /// <param name=“sourceTable”源表 </param     /// <param name=“fieldNames”字段 </param     /// <returns一个新的不含重复行的 DataTable</returns     public DataTable Distinct(string tableName, DataTable sourceTable, string[] fieldNames)     {       DataTable dt = sourceTable.Clone();       dt.TableName = tableName;       string fields = ““;       for ( int i = 0; i < fieldNames.Length; i++ )       {         fields += fieldNames[ i ] + “,”;       }       fields = fields.Remove( fields.Length - 1, 1 ); 40 / 48 ?精品文档?       DataRow lastRow = null;       foreach ( DataRow dr in sourceTable.Select( ““, fields ) )       {         if ( lastRow == null || !( RowEqual( lastRow, dr, dt.Columns ) ) )         {           lastRow = dr;           dt.Rows.Add( dr.ItemArray );         }       }       if ( ds != null && !ds.Tables.Contains( tableName ) )       {         ds.Tables.Add( dt );       }       return dt;     }     #endregion     #region Select Table Into     /// <summary 41 / 48 ?精品文档?     /// 按sort排序,按rowFilter过滤 sourceTable,     /// 复制fieldList中指明的字段的数据到 新DataTable,并返回之     /// </summary     /// <param name=“tableName”表名 </param     /// <param name=“sourceTable”源表 </param     /// <param name=“fieldList”字段列表 </param     /// <param name=“rowFilter”过滤条件 </param     /// <param name=“sort”排序</param     /// <returns新DataTable</returns     public DataTable SelectInto(string tableName, DataTable sourceTable,                   string fieldList, string rowFilter, string sort)     {       DataTable dt = CreateTable( tableName, sourceTable, fieldList ); 42 / 48 ?精品文档?       InsertInto( dt, sourceTable, fieldList, rowFilter, sort );       return dt;     }     #endregion     #region Group By Table     public DataTable SelectGroupByInto(string tableName, DataTable sourceTable, string fieldList,                       string rowFilter, string groupBy)     {       DataTable dt = CreateGroupByTable( tableName, sourceTable, fieldList );       InsertGroupByInto( dt, sourceTable, fieldList, rowFilter, groupBy );       return dt;     }     #endregion     #region Join Tables     public DataTable SelectJoinInto(string 43 / 48 ?精品文档? tableName, DataTable sourceTable, string fieldList, string rowFilter, string sort)     {       DataTable dt = CreateJoinTable( tableName, sourceTable, fieldList );       InsertJoinInto( dt, sourceTable, fieldList, rowFilter, sort );       return dt;     }     #endregion     #region Create Table     public DataTable CreateTable(string tableName, string fieldList)     {       DataTable dt = new DataTable( tableName );       DataColumn dc;       string[] Fields = fieldList.Split( ‘,’ );       string[] FieldsParts;       string Expression;       foreach ( string Field in Fields ) 44 / 48 ?精品文档?       {         FieldsParts = Field.Trim().Split( “ “.ToCharArray(), 3 ); // allow for spaces in the expression         // add fieldname and datatype         if ( FieldsParts.Length == 2 )         {           dc = dt.Columns.Add( FieldsParts[ 0 ].Trim(), Type.GetType( “System.” + FieldsParts[ 1 ].Trim(), true, true ) );           dc.AllowDBNull = true;         }         else if ( FieldsParts.Length == 3 ) // add fieldname, datatype, and expression         {           Expression = FieldsParts[ 2 ].Trim(); 45 / 48 ?精品文档?           if ( Expression.ToUpper() == “REQUIRED” )           {             dc = dt.Columns.Add( FieldsParts[ 0 ].Trim(), Type.GetType( “System.” + FieldsParts[ 1 ].Trim(), true, true ) );             dc.AllowDBNull = false;           }           else           {             dc = dt.Columns.Add( FieldsParts[ 0 ].Trim(), Type.GetType( “System.” + FieldsParts[ 1 ].Trim(), true, true ), Expression );           }         }         else         {           return null;         } 46 / 48 ?精品文档?       }       if ( ds != null )       {         ds.Tables.Add( dt );       }       return dt;     }     public DataTable CreateTable(string tableName, string fieldList, string keyFieldList)     {       DataTable dt = CreateTable( tableName, fieldList );       string[] KeyFields = keyFieldList.Split( ‘,’ );       if ( KeyFields.Length 0 )       {         DataColumn[] KeyFieldColumns = new DataColumn[KeyFields.Length];         int i;         for ( i = 1; i == KeyFields.Length - 1; ++i )         { 47 / 48 ?精品文档?           KeyFieldColumns[ i ] = dt.Columns[ KeyFields[ i ].Trim() ];         }         dt.PrimaryKey = KeyFieldColumns;       }       return dt;     }     #endregion   } } 希望本文所述对大家asp.net程序设计有所帮助。 48 / 48
本文档为【asp&#46;net DataTable相关操作集锦&#40;筛选,取前N条数据,去重复行,获取指定列数据等&#41;】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_477730
暂无简介~
格式:doc
大小:111KB
软件:Word
页数:0
分类:企业经营
上传时间:2018-04-04
浏览量:42