扩展 DataSet 的 ToString() 方法
为了方便使用 DataSet,需要扩展其 ToString() 方法,但是,我们并不真的覆盖原来的 ToString() 方法。
open System.Xml;;
open System.IO;;
open System.Linq;;
open System.Data;;
type System.Data.DataTable with
member dt.ToString2() =
let f0 = seq { for f in dt.Columns do
yield f.ColumnName }
|> Seq.reduce (fun a b -> a + "," + b)
let q0 = seq { for r in dt.Select() do
let t = r.ItemArray
|> Seq.map ( fun i -> i.ToString() )
|> Seq.reduce ( fun a b -> a + "," + b )
yield t
}
|> String.concat ("\r\n")
f0 + "\r\n" + q0
type System.Data.DataTableCollection with
member dtc.ToString2() =
[ 1..dtc.Count ]
|> Seq.map(fun i -> dtc.Item(i-1).ToString2() )
|> String.concat ("\r\n")
type System.Data.DataSet with
member ds.ToString2() =
[ ds.Tables ]
|> Seq.map(fun i -> i.ToString2() )
|> String.concat ("\r\n")
定义好以后,就可以使用了。
let ds = new DataSet()
ds.ReadXml(@"C:\Users\tmx\Desktop\aaa.xml")
ds.ToString2()
ds.Tables.ToString2()
ds.Tables.[0].ToString2()
ds.Tables.[1].ToString2()
let ds = new DataSet()
ds.ReadXml(@"aaa.xml")
ds.ToString2()
ds.Tables.ToString2()
ds.Tables.[0].ToString2()
ds.Tables.[1].ToString2()