using Microsoft.VisualStudio.TestTools.UnitTesting; using System; using System.Collections.Generic; using System.Diagnostics; namespace Falcon.SugarApi.Test { /// /// 枚举类型扩展方法 /// [TestClass] public class IEnumerableExtendTest { [TestMethod("ToDataTable测试")] public void ToDataTableTest() { var sw = new Stopwatch(); var list = new List { new{a=1,b="b1" }, new{a=2,b="b2",c=1 }, }; sw.Start(); var r = list.ToDataTable(); sw.Stop(); Console.WriteLine($"ToDataTable转换,共用时{sw.ElapsedMilliseconds}毫秒"); //测试表 Assert.IsNotNull(r); Assert.AreEqual(3, r.Columns.Count); Assert.AreEqual(2, r.Rows.Count); //测试列 var col1 = r.Columns[0]; Assert.IsTrue(col1.ColumnName == "a"); Assert.IsTrue(col1.DataType == typeof(int)); var col2 = r.Columns[1]; Assert.IsTrue(col2.ColumnName == "b"); Assert.IsTrue(col2.DataType == typeof(string)); var col3 = r.Columns[2]; Assert.IsTrue(col3.ColumnName == "c"); Assert.IsTrue(col3.DataType == typeof(int)); //测试行 var row = r.Rows[0]; Assert.IsTrue(row[0].ToString() == "1"); Assert.IsTrue(row[1].ToString() == "b1"); Assert.IsTrue(row[2].ToString() == ""); row = r.Rows[1]; Assert.IsTrue((int)row[0] == 2); Assert.IsTrue((string)row[1] == "b2"); Assert.IsTrue((int)row[2] == 1); Console.WriteLine($"ToDataTable测试完成"); var models = new List { new ToDataTableTestModel{ id=1, }, new ToDataTableTestModel{id=2,Name="name2" }, }; sw.Reset(); r = models.ToDataTable(); sw.Stop(); Console.WriteLine($"ToDataTable<>转换,共用时{sw.ElapsedMilliseconds}毫秒"); //测试表 Assert.IsNotNull(r); Assert.AreEqual(2, r.Columns.Count); Assert.AreEqual(2, r.Rows.Count); //测试列 col1 = r.Columns[0]; Assert.IsTrue(col1.ColumnName == "id"); Assert.IsTrue(col1.DataType == typeof(int)); col2 = r.Columns[1]; Assert.IsTrue(col2.ColumnName == "Name"); Assert.IsTrue(col2.DataType == typeof(string)); //测试行 row = r.Rows[0]; Assert.IsTrue(row[0].ToString() == "1"); Assert.IsTrue(row[1].ToString() == ""); row = r.Rows[1]; Assert.IsTrue((int)row[0] == 2); Assert.IsTrue(row[1].ToString() == "name2"); Console.WriteLine($"ToDataTable<>测试完成"); } } internal class ToDataTableTestModel { public int id { get; set; } public string Name { get; set; } } }