C#使用杂碎笔记

 

IDE功能

Ctrl+K+D:快速对齐代码
Ctrl+J:快速弹出智能提示
Shift+End 、Shift+Home
Ctrl+K+C:注释所选代码
Ctrl+K+U:取消对所选代码的注释
Ctrl+R+U:生成字段对应属性
F1:转到帮助文档
折叠冗余代码:#Region 和#EndRegion
程序调试方法:
1)、F11逐语句调试(单步调试)
2)、F10逐过程调试
3)、断点调试

 

命名空间 alt+shift+F10
在一个项目中引用另一个项目的类
1)、添加引用
2)、引用命名空间

 

C# 如何判断一个字符串是不是日期型数据

 

string date = "2001-1-5";
DateTime dt;
if (DateTime.TryParse(date, out dt))
{
 Console.WriteLine(dt);
}
else
{
 throw new Exception("不是正确的日期格式类型!");
} 

 

C# 判断字符串是否可以转化为数字

 

 
/// <SUMMARY>
/// 判断字符串是否可以转化为数字
/// </SUMMARY>
/// <PARAM name="str"> 要检查的字符串 </PARAM>
/// <RETURNS>true: 可以转换为数字;false: 不是数字 </RETURNS>
public static bool IsNumberic(string str)
{
 double vsNum;
 bool isNum;
 isNum = double.TryParse(str, System.Globalization.NumberStyles.Float,
 System.Globalization.NumberFormatInfo.InvariantInfo, out vsNum);
 return isNum;
 }

小注:

 Double.TryParse 方法 (String, NumberStyles, IFormatProvider, Double)

 将指定样式和区域性特定格式的数字的字符串表示形式转换为它的等效双精度浮点数。一个指示转换是否成功的返回值。

 public static bool TryParse (

 string s,

 NumberStyles style,

 IFormatProvider provider,

 out double result

 )

 参数:

 s: 包含要转换的数字的字符串。

 style:NumberStyles 值的按位组合,指示 s 允许使用的格式。一个用来指定的典型值为 Float 与 AllowThousands 的组合。

 provider: 一个 IFormatProvider, 它提供有关 s 的区域性特定格式设置信息。

 result: 当此方法返回时,如果转换成功,则包含与 s 中所包含的数值或符号等效的双精度浮点数;如果转换失败,则包含零。如果 s 参数为空引用(在 Visual Basic 中为 Nothing),其格式不符合 style, 表示的数字小于 MinValue 或大于 MaxValue, 或者 style 不是 NumberStyles 枚举的常数的有效组合,则转换失败。该参数未经初始化即被传递。 www.lefeng123.com

 返回值

 如果 s 成功转换,则为 true; 否则为 false.

C# 实现保留两位小数的方法

 

1、

Math.Round(0.333333,2);// 按照四舍五入的国际标准
2、
double dbdata=0.335333;
string str1=String.Format("{0:F}",dbdata);// 默认为保留两位
3、
float i=0.333333;
int j=(int)(i * 100);
i =  j/100;
4、
decimal.Round(decimal.Parse("0.3333333"),2)
5、
private System.Globalization.NumberFormatInfo nfi = new System.Globalization.NumberFormatInfo();

float test=0.333333f;
nfi.NumberDecimalDigits=2;
string result=test.ToString("N", nfi);
6、
string result= String.Format("{0:N2}",Convert.ToDecimal("0.333333").ToString());

 

C# DateTime

 

 

获得当前系统时间: DateTime dt = DateTime.Now;

Environment.TickCount 可以得到 “系统启动到现在” 的毫秒值

DateTime now = DateTime.Now;
Console.WriteLine(now.ToString("yyyy-MM-dd"));  // 按 yyyy-MM-dd 格式输出 s

Console.WriteLine(dt.ToString());    //  26/11/2009 AM 11:21:30

Console.WriteLine(dt.ToFileTime().ToString());   //   129036792908014024

// Converts the value of the current System.DateTime object to a Windows file time

Console.WriteLine(dt.ToFileTimeUtc().ToString());  //     129036792908014024

// Converts the value of the current System.DateTime object to a Windows file time

Console.WriteLine(dt.ToLocalTime().ToString());   //       26/11/2009 AM 11:21:30

// Converts the value of the current System.DateTime object to local time.

Console.WriteLine(dt.ToLongDateString().ToString());   //      2009 年 11 月 26 日

Console.WriteLine(dt.ToLongTimeString().ToString());  //      AM 11:21:30

Console.WriteLine(dt.ToOADate().ToString());   //      40143.4732731597

Console.WriteLine(dt.ToShortDateString().ToString());   //     26/11/2009

Console.WriteLine(dt.ToShortTimeString().ToString());   //     AM 11:21

Console.WriteLine(dt.ToUniversalTime().ToString());   //       26/11/2009 AM 3:21:30

Console.WriteLine(dt.Year.ToString());   //        2009

Console.WriteLine(dt.Date.ToString());   //        26/11/2009 AM 12:00:00

Console.WriteLine(dt.DayOfWeek.ToString());  //       Thursday

Console.WriteLine(dt.DayOfYear.ToString());   //       330

Console.WriteLine(dt.Hour.ToString());       //        11

Console.WriteLine(dt.Millisecond.ToString());   //     801        (毫秒)

Console.WriteLine(dt.Minute.ToString());   //      21

Console.WriteLine(dt.Month.ToString());   //       11

Console.WriteLine(dt.Second.ToString());   //      30

Console.WriteLine(dt.Ticks.ToString());   //       633948312908014024


Console.WriteLine(dt.TimeOfDay.ToString());   //       12:29:51.5181524

// Gets the time of day for this instance.

// 返回 A System.TimeSpan that represents the fraction of the day that has elapsed since midnight.

Console.WriteLine(dt.ToString());     //     26/11/2009 PM 12:29:51

Console.WriteLine(dt.AddYears(1).ToString());    //         26/11/2010 PM 12:29:51

Console.WriteLine(dt.AddDays(1.1).ToString());    //        27/11/2009 PM 2:53:51

Console.WriteLine(dt.AddHours(1.1).ToString());    //       26/11/2009 PM 1:35:51

Console.WriteLine(dt.AddMilliseconds(1.1).ToString());    //26/11/2009 PM 12:29:51

Console.WriteLine(dt.AddMonths(1).ToString());    //        26/12/2009 PM 12:29:51

Console.WriteLine(dt.AddSeconds(1.1).ToString());    //     26/11/2009 PM 12:29:52

Console.WriteLine(dt.AddMinutes(1.1).ToString());    //     26/11/2009 PM 12:30:57

Console.WriteLine(dt.AddTicks(1000).ToString());    //      26/11/2009 PM 12:29:51

Console.WriteLine(dt.CompareTo(dt).ToString());    //       0

Console.WriteLine(dt.Add(new TimeSpan(1,0,0,0)).ToString());    // 加上一个时间段

(注:

System.TimeSpan 为一个时间段,构造函数如下

public TimeSpan(long ticks); // ticks: A time period expressed in 100-nanosecond units.

                           //nanosecond:十亿分之一秒   new TimeSpan(10,000,000)        为一秒

public TimeSpan(int hours, int minutes, int seconds);

public TimeSpan(int days, int hours, int minutes, int seconds);

public TimeSpan(int days, int hours, int minutes, int seconds, int milliseconds);

Console.WriteLine(dt.Equals("2005-11-6 16:11:04").ToString());     //        False

Console.WriteLine(dt.Equals(dt).ToString());    //      True

Console.WriteLine(dt.GetHashCode().ToString());    //       1103291775

Console.WriteLine(dt.GetType().ToString());    //       System.DateTime

Console.WriteLine(dt.GetTypeCode().ToString());    //       DateTime
  

long Start = Environment.TickCount;   // 单位是毫秒

long End = Environment.TickCount;

Console.WriteLine("Start is :"+Start);

Console.WriteLine("End is :"+End);

Console.WriteLine("The Time is {0}",End-Start);
Console.WriteLine(dt.GetDateTimeFormats('s')[0].ToString());    //2009-11-26T13:29:06

Console.WriteLine(dt.GetDateTimeFormats('t')[0].ToString());    //PM 1:29

Console.WriteLine(dt.GetDateTimeFormats('y')[0].ToString());    //2009 年 11 月

Console.WriteLine(dt.GetDateTimeFormats('D')[0].ToString());    //2009 年 11 月 26 日

Console.WriteLine(dt.GetDateTimeFormats('D')[1].ToString());    // 星期四, 26 十一月, 2009

Console.WriteLine(dt.GetDateTimeFormats('D')[2].ToString());    //26 十一月, 2009

Console.WriteLine(dt.GetDateTimeFormats('D')[3].ToString());    // 星期四 2009 11 26

Console.WriteLine(dt.GetDateTimeFormats('M')[0].ToString());    //26 十一月

Console.WriteLine(dt.GetDateTimeFormats('f')[0].ToString());    //2009 年 11 月 26 日 PM 1:29

Console.WriteLine(dt.GetDateTimeFormats('g')[0].ToString());    //26/11/2009 PM 1:29

Console.WriteLine(dt.GetDateTimeFormats('r')[0].ToString());    //Thu, 26 Nov 2009 13:29:06 GMT

(注:

常用的日期时间格式:

格式 说明      输出格式 
d 精简日期格式 MM/dd/yyyy 
D 详细日期格式 dddd, MMMM dd, yyyy 
f  完整格式    (long date + short time) dddd, MMMM dd, yyyy HH:mm 
F 完整日期时间格式 (long date + long time) dddd, MMMM dd, yyyy HH:mm:ss 
g 一般格式 (short date + short time) MM/dd/yyyy HH:mm 
G 一般格式 (short date + long time) MM/dd/yyyy HH:mm:ss 
m,M 月日格式 MMMM dd 
s 适中日期时间格式 yyyy-MM-dd HH:mm:ss 
t 精简时间格式 HH:mm 
T 详细时间格式 HH:mm:ss

)


Console.WriteLine(string.Format("{0:d}", dt));    //28/12/2009

Console.WriteLine(string.Format("{0:D}", dt));    //2009 年 12 月 28 日

Console.WriteLine(string.Format("{0:f}", dt));    //2009 年 12 月 28 日 AM 10:29

Console.WriteLine(string.Format("{0:F}", dt));    //2009 年 12 月 28 日 AM 10:29:18

Console.WriteLine(string.Format("{0:g}", dt));    //28/12/2009 AM 10:29

Console.WriteLine(string.Format("{0:G}", dt));    //28/12/2009 AM 10:29:18

Console.WriteLine(string.Format("{0:M}", dt));    //28 十二月

Console.WriteLine(string.Format("{0:R}", dt));    //Mon, 28 Dec 2009 10:29:18 GMT

Console.WriteLine(string.Format("{0:s}", dt));    //2009-12-28T10:29:18

Console.WriteLine(string.Format("{0:t}", dt));    //AM 10:29

Console.WriteLine(string.Format("{0:T}", dt));    //AM 10:29:18

Console.WriteLine(string.Format("{0:u}", dt));    //2009-12-28 10:29:18Z

Console.WriteLine(string.Format("{0:U}", dt));    //2009 年 12 月 28 日 AM 2:29:18

Console.WriteLine(string.Format("{0:Y}", dt));    //2009 年 12 月

Console.WriteLine(string.Format("{0}", dt));    //28/12/2009 AM 10:29:18

Console.WriteLine(string.Format("{0:yyyyMMddHHmmssffff}", dt));    //200912281029182047

计算 2 个日期之间的天数差
DateTime dt1 = Convert.ToDateTime("2007-8-1");    
DateTime dt2 = Convert.ToDateTime("2007-8-15");   
TimeSpan span = dt2.Subtract(dt1);              
int dayDiff = span.Days ;                    

计算某年某月的天数
int days = DateTime.DaysInMonth(2009, 8);       
days = 31;                                      

给日期增加一天、减少一天
DateTime dt =DateTime.Now;
dt.AddDays(1); // 增加一天 dt 本身并不改变
dt.AddDays(-1);// 减少一天 dt 本身并不改变

C# 文件操作(全部) 追加、拷贝、删除、移动文件、创建目录 修改文件名、文件夹名

http://www.cnblogs.com/JKqingxinfeng/archive/2012/12/14/2818137.html

 

C# 删除文件夹

这里说三种
 
1 这是最简单的方法
 
        DirectoryInfo di = new DirectoryInfo(string Path);
         di.Delete(true);
  注:path 是你要删除的非空目录;
     true:你要删除里面所有的文件,包括文件夹和子文件夹
2
 /// <summary>
       /// 删除非空文件夹
       /// </summary>
       /// <param name="path"> 要删除的文件夹目录 </param>
        void DeleteDirectory(string path)
        {
            DirectoryInfo dir = new DirectoryInfo(path); 
            if (dir.Exists)
            {
                DirectoryInfo[] childs = dir.GetDirectories();
                foreach (DirectoryInfo child in childs)
                {
                    child.Delete(true);
                }
                dir.Delete(true);
            }
        }
 
3 递归方法:(这是删除文件的方法)
private staticv oid DeleteDirectory(File tmpFile) {
        if (!tmpFile.exists()) {
             System.out.println("file is not exist!");
            return;
         }
        if (tmpFile.isDirectory()) {
             File[] fileList = tmpFile.listFiles();
            for (int i =0; i < fileList.length; i++) {
                if (fileList[i].isDirectory()) {
                     DeleteDirectorys(fileList[i]);s
                 }  
           }
     }
}

 

C# 读取指定目录下所有文件

根据网上资料整理而得,本来还可以读出所有目录的名字,但是考虑到文件名中包含完整文件路径,故意义不大,就不用读出目录名功能。 
主要功能: 
    1. 读取指定目录下含子目录中所有文件。 
    2. 计算文件大小 
    3. 文件含完整路径 
    4. 列表显示到 ListBox 控件 
    5. 列表写入指定 Txt 文本文件。 

  1. using System;  
  2. using System.Data;  
  3. using System.Configuration;  
  4. using System.Web;  
  5. using System.Web.Security;  
  6. using System.Web.UI;  
  7. using System.Web.UI.WebControls;  
  8. using System.Web.UI.WebControls.WebParts;  
  9. using System.Web.UI.HtmlControls;  
  10. using System.IO;  
  11. using System.Collections;  
  12.   
  13. public partial class _Default : System.Web.UI.Page   
  14. {  
  15.   
  16.     string path = @"\\192.168.1.88\movie \ 音乐综艺";    // 目录名 也可以用相当路径  
  17.     string filter = "*.*";        // 文件类型  
  18.     int m_numFiles = 0;        // 文件总数  
  19.     ArrayList m_pathList = new ArrayList();// 包含所有文件路径的数组  
  20.     string[] files;            // 所有文件名  
  21.   
  22.   
  23.     protected void Page_Load(object sender, EventArgs e)  
  24.     {  
  25.   
  26.     }  
  27.       
  28.     private string[] CreatePathList()  
  29.     {  
  30.         if (m_numFiles <= 0)  
  31.         {  
  32.             return null;  
  33.         }  
  34.   
  35.         string[] str = new string[m_numFiles];  
  36.         int index = 0;  
  37.   
  38.         try  
  39.         {  
  40.             IEnumerator pathIter = m_pathList.GetEnumerator();  
  41.             while (pathIter.MoveNext())  
  42.             {  
  43.                 string[] ar = (string[])(pathIter.Current);  
  44.                 IEnumerator fileIter = ar.GetEnumerator();  
  45.                 while (fileIter.MoveNext())  
  46.                 {  
  47.                     str[index] = (string)(fileIter.Current);  
  48.                     ++index;  
  49.                 }  
  50.             }  
  51.         }  
  52.         catch (Exception e)  
  53.         {  
  54.             Console.Write(e.ToString());  
  55.             return null;  
  56.         }  
  57.   
  58.         return str;  
  59.   
  60.     }  
  61.   
  62.     private void ParseDirectory(string path, string p)  
  63.     {  
  64.         string[] dirs = Directory.GetDirectories(path);// 得到子目录  
  65.         IEnumerator iter = dirs.GetEnumerator();  
  66.         while (iter.MoveNext())  
  67.         {  
  68.             string str = (string)(iter.Current);  
  69.             ParseDirectory(str, filter);  
  70.         }  
  71.         string[] files = Directory.GetFiles(path, filter);  
  72.         if (files.Length> 0)  
  73.         {  
  74.             foreach (string filename in files)  
  75.             {  
  76.                   
  77.                 FileInfo inf=new FileInfo(filename);  
  78.                 float value = inf.Length / 1024 /1024;  
  79.                 m_numFiles += files.Length;  
  80.                 m_pathList.Add(files);  
  81.                 ListBox1.Items.Add(filename);  
  82.                 ListBox1.Items.Add("文件大小:"+value.ToString()+"M");
  83.             }  
  84.         }  
  85.   
  86.     }  
  87.       
  88.     protected void BtGetFileList_Click(object sender, EventArgs e)  
  89.     {  
  90.         ParseDirectory(path, "*.*");  
  91.         files = CreatePathList();        // 生成文件名数组  
  92.         //ListBox1.Items.Add(files.ToString());  
  93.         if (files == null)  
  94.         {  
  95.             throw new Exception(String.Concat("No file found in", path));  
  96.         }  
  97.     }  
  98.     protected void BtInsrtTxt_Click(object sender, EventArgs e)  
  99.     {  
  100.         if (File.Exists("c:\\test.txt") == true)  
  101.         {  
  102.             try  
  103.             {  
  104.                 //label2.Text = "OK";  
  105.                 //File.Delete("c:\\test.txt");  
  106.                 //File.Create("test.txt");  
  107.                 StreamWriter sw = new StreamWriter("c:\\test.txt"true);  
  108.                 for (int i = 0; i <ListBox1.Items.Count; i++)  
  109.                 {  
  110.                     // 写入 TXT 文件                       
  111.                     sw.Write(ListBox1.Items[i].ToString() + "\r\n"); 
  112.                 }  
  113.                 sw.Close();  
  114.   
  115.   
  116.             }  
  117.             catch (Exception err)  
  118.             {  
  119.                 Console.WriteLine(err.ToString());  
  120.             }  
  121.         }  
  122.         else  
  123.         {  
  124.             //label2.Text = "error";  
  125.         }  
  126.     }  
  127. }  
  128.  

 

如何让使用者下载完档案后自动删除暂存的档案

我们有时后会在 Server 端动态的产生一个档案,然后让使用者下载,你也有可能希望使用者下载完该档的时候可以直接从 Server 端直接删除,不过这个动作无法在一个 HTTP Request/Response 循环中完成,因为档案正在传送回用户端时并无法删除该档!

另一种可能会出现的需求是,使用者上传档案(例如说要汇入资料库的档案),上传完之后的下一页需要处理一些资料的验证等工作,最后将资料写入资料库后将该暂存档删除。 

诸如此类的需求可以使用 Path 类别的一个静态方法 Path.GetTempFileName() 来达成,该方法会再你系统的暂存目录中建立一个长度为 0 的暂存档案,然后回传该档案的完整路径,你就可以用这个档案路径写入你要写入的资料,至于何时要删除掉这个档案就不重要了,因为删除暂存档的动作可以留给作业系统来处理!

    string tmpFilePName = Path.GetTempFileName();

    File.WriteAllText(tmpFilePName,"TEST 123");

我们有时后会在 Server 端动态的产生一个档案,然后让使用者下载,你也有可能希望使用者下载完该档的时候可以直接从 Server 端直接删除,不过这个动作无法在一个 HTTP Request/Response 循环中完成,因为档案正在传送回用户端时并无法删除该档!

另一种可能会出现的需求是,使用者上传档案(例如说要汇入资料库的档案),上传完之后的下一页需要处理一些资料的验证等工作,最后将资料写入资料库后将该暂存档删除。 

诸如此类的需求可以使用 Path 类别的一个静态方法 Path.GetTempFileName() 来达成,该方法会再你系统的暂存目录中建立一个长度为 0 的暂存档案,然后回传该档案的完整路径,你就可以用这个档案路径写入你要写入的资料,至于何时要删除掉这个档案就不重要了,因为删除暂存档的动作可以留给作业系统来处理!

string tmpFilePName = Path.GetTempFileName();

File.WriteAllText(tmpFilePName,"TEST 123");

C# DataTable 的详细用法

在项目中经常用到 DataTable, 如果 DataTable 使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果,现对 DataTable 的使用技巧进行一下总结。 

        一、DataTable 简介    

          (1) 构造函数 
          DataTable()   
不带参数初始化 DataTable 类的新实例。 
          DataTable(string tableName)  
用指定的表名初始化 DataTable 类的新实例。 
          DataTable(string tableName, string tableNamespace) 
用指定的表名和命名空间初始化 DataTable类的新实例。 
          (2) 
常用属性 
          CaseSensitive    
指示表中的字符串比较是否区分大小写。 
          ChildRelations   
获取此 DataTable 的子关系的集合。 
          Columns             
获取属于该表的列的集合。 
          Constraints        
获取由该表维护的约束的集合。 
          
DataSet               获取此表所属的 DataSet 
          DefaultView       
获取可能包括筛选视图或游标位置的表的自定义视图。 
          
HasErrors          获取一个值,该值指示该表所属的 DataSet 的任何表的任何行中是否有错误。 
          MinimumCapacity  
获取或设置该表最初的起始大小。该表中行的最初起始大小。默认值为 50 
          Rows                  
获取属于该表的行的集合。 
          
TableName       获取或设置 DataTable 的名称。 

          (3) 常用方法 
          AcceptChanges()   
提交自上次调用 AcceptChanges() 以来对该表进行的所有更改。 
          BeginInit()         
开始初始化在窗体上使用或由另一个组件使用的 DataTable。初始化发生在运行时。

          Clear()               清除所有数据的 DataTable 
          Clone()              
克隆 DataTable 的结构,包括所有 DataTable 架构和约束。 
          EndInit()            
结束在窗体上使用或由另一个组件使用的 DataTable 的初始化。初始化发生在运行时。 
          ImportRow(DataRow row)    
 DataRow 复制到 DataTable 中,保留任何属性设置以及初始值和当前值。 
          Merge(DataTable table)  
将指定的 DataTable 与当前的 DataTable 合并。 
          NewRow()         
创建与该表具有相同架构的新 DataRow
 
        
二、DataTable 使用技巧

      (1)Create a DataTable
         DataTable dt = new DataTable("Table_AX"); 

      (2)Add columns for DataTable
        //Method 1
        dt.Columns.Add("column0", System.Type.GetType("System.String"));
        //Method 2
        DataColumn dc = new DataColumn("column1", System.Type.GetType("System.Boolean"));
        dt.Columns.Add(dc); 

       (3)Add rows for DataTable
         //Initialize the row
         DataRow dr = dt.NewRow();
         dr["column0"] = "AX";
         dr["column1"] = true;
         dt.Rows.Add(dr);
         //Doesn't initialize the row
         DataRow dr1 = dt.NewRow();
         dt.Rows.Add(dr1);  

        (4)Select row
         //Search the second row 如果没有赋值, 则用 is null 来 select
         DataRow[] drs = dt.Select("column1 is null");
         DataRow[] drss = dt.Select("column0 = 'AX'"); 

        (5)Copy DataTable include data
         DataTable dtNew = dt.Copy(); 

        (6)Copy DataTable only scheme
         DataTable dtOnlyScheme = dt.Clone(); 

        (7)Operate one row
         // 对 dt 的操作
         //Method 1
         DataRow drOperate = dt.Rows[0];
         drOperate["column0"] = "AXzhz";
         drOperate["column1"] = false;
         //Method 2
         drOperate[0] = "AXzhz";
         drOperate[1] = false;
         //Method 3
         dt.Rows[0]["column0"] = "AXzhz";
         dt.Rows[0]["column1"] = false;
         //Method 4
         dt.Rows[0][0] = "AXzhz";
         dt.Rows[0][1] = false; 

       (8)Evaluate another DataTable's row to current Datatable
         dtOnlyScheme.Rows.Add(dt.Rows[0].ItemArray); 

       (9)Convert to string
         System.IO.StringWriter sw = new System.IO.StringWriter();
         System.Xml.XmlTextWriter xw = new System.Xml.XmlTextWriter(sw);
         dt.WriteXml(xw);
         string s = sw.ToString();

        (10)Filter DataTable
         dt.DefaultView.RowFilter = "column1 <> true";
         dt.DefaultView.RowFilter = "column1 = true";

        (11)Sort row
          dt.DefaultView.Sort = "ID ,Name ASC";
          dt=dt.DefaultView.ToTable();

         (12)Bind DataTable
           // 绑定的其实是 DefaultView
          gvTestDataTable.DataSource = dt;
          gvTestDataTable.DataBind();

         (13)judge the DataTable’s Column name is a string
          // 判断一个字符串是否为 DataTable 的列名
         dtInfo.Columns.Contains("AX");

         (14)DataTable convert to XML and XML convert to DataTable
          protected void Page_Load(object sender, EventArgs e)
          {
             DataTable dt_AX = new DataTable();
             //dt_AX.Columns.Add("Sex", typeof(System.Boolean));
             //DataRow dr = dt_AX.NewRow();
             //dr["Sex"] = true;
             //dt_AX.Rows.Add(dr);
             string xml=ConvertBetweenDataTableAndXML_AX(dt_AX);
             DataTable dt = ConvertBetweenDataTableAndXML_AX(xml);
         }
         public string ConvertBetweenDataTableAndXML_AX(DataTable dtNeedCoveret)
        {
             System.IO.TextWriter tw = new System.IO.StringWriter();
             //if TableName is empty, WriteXml() will throw Exception.                 

dtNeedCoveret.TableName=dtNeedCoveret.TableName.Length==0?"Table_AX":dtNeedCoveret.TableName;
             dtNeedCoveret.WriteXml(tw);
             dtNeedCoveret.WriteXmlSchema(tw);
             return tw.ToString();
        }
         public DataTable ConvertBetweenDataTableAndXML_AX(string xml)
        {
             System.IO.TextReader trDataTable = newSystem.IO.StringReader(xml.Substring(0, xml.IndexOf("<?xml")));

             System.IO.TextReader trSchema = newSystem.IO.StringReader(xml.Substring(xml.IndexOf("<?xml")));
             DataTable dtReturn = new DataTable();
             dtReturn.ReadXmlSchema(trSchema);
             dtReturn.ReadXml(trDataTable);
             return dtReturn;
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值