diff --git a/Falcon.SugarApi.Test/IEnumerableExtendTest.cs b/Falcon.SugarApi.Test/IEnumerableExtendTest.cs
new file mode 100644
index 0000000..7f7cd7a
--- /dev/null
+++ b/Falcon.SugarApi.Test/IEnumerableExtendTest.cs
@@ -0,0 +1,89 @@
+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; }
+ }
+
+}
+
diff --git a/Falcon.SugarApi/IEnumerableExtend.cs b/Falcon.SugarApi/IEnumerableExtend.cs
new file mode 100644
index 0000000..3011029
--- /dev/null
+++ b/Falcon.SugarApi/IEnumerableExtend.cs
@@ -0,0 +1,88 @@
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using System.Reflection;
+
+namespace Falcon.SugarApi
+{
+ ///
+ /// 枚举扩展
+ ///
+ public static class IEnumerableExtend
+ {
+ ///
+ /// 枚举转换为DataTable
+ ///
+ /// 数据枚举
+ /// 转换后Datatable
+ /// 参数为Null
+ public static DataTable ToDataTable(this IEnumerable