NET CORE supports native Datatable

This commit is contained in:
sunkaixuan
2019-03-17 19:19:41 +08:00
parent cc496a2ca8
commit efcdd3a4aa
3 changed files with 35 additions and 430 deletions

View File

@@ -325,6 +325,7 @@ namespace OrmTest.Demo
var getAll = db.Queryable<Student>().Select<object>("*").ToList();
var getAll2 = db.Queryable<Student>().Select(it=>it.Name.Substring(0,4)).ToList();
var getAll22 = db.Queryable<Student>().ToDataTable();
var getAll220 = db.Ado.GetDataSetAll("select 1");
var getAll222 = db.Queryable<Student>().ToJson();
var getAll2222 = db.Queryable<Student>().OrderBy(it=>it.Name.Length).ToJson();
var getAll3 = db.Queryable<Student>().OrderBy(it => new { it.Id, it.Name }).GroupBy(it => new { it.Id, it.Name }).Select<object>("id").ToList();

View File

@@ -5,401 +5,13 @@ using Oracle.ManagedDataAccess.Client;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Threading.Tasks;
namespace SqlSugar
{
/// <summary>
/// 作者sunkaixuan
/// 创建时间2016/7/31
/// 修改时间:-
/// 说明:让.netCore支持DataSet
/// </summary>
public class DataSet
{
/// <summary>
/// 数据表
/// </summary>
public List<DataTable> Tables = new List<DataTable>();
}
/// <summary>
/// 作者sunkaixuan
/// 创建时间2016/7/31
/// 修改时间:-
/// 说明:让.netCore支持DataTable
/// </summary>
public class DataTable
{
/// <summary>
/// 列信息
/// </summary>
public DataColumnCollection Columns = new DataColumnCollection();
/// <summary>
/// 行信息
/// </summary>
public DataRowCollection Rows = new DataRowCollection();
}
/// <summary>
/// 数据列
/// </summary>
public class DataColumn
{
/// <summary>
/// Data Column
/// </summary>
public DataColumn()
{
}
/// <summary>
/// Column Name
/// </summary>
/// <param name="columnName"></param>
public DataColumn(string columnName)
{
this.ColumnName = columnName;
}
/// <summary>
/// Data Column
/// </summary>
/// <param name="columnName"></param>
/// <param name="dataType"></param>
public DataColumn(string columnName, Type dataType)
{
this.ColumnName = columnName;
this.DataType = dataType;
}
/// <summary>
/// Column Name
/// </summary>
public string ColumnName { get; internal set; }
/// <summary>
/// Data Type
/// </summary>
public Type DataType { get; internal set; }
}
/// <summary>
/// 数据列集合
/// </summary>
public class DataColumnCollection : IEnumerable, ICollection, IEnumerator
{
/// <summary>
/// Get Item By Index
/// </summary>
/// <param name="thisIndex"></param>
/// <returns></returns>
public DataColumn this[int thisIndex]
{
get
{
return cols[thisIndex];
}
}
private int index = -1;
private List<DataColumn> cols;
/// <summary>
/// Count
/// </summary>
public int Count
{
get
{
if (this.cols == null)
{
this.cols = new List<DataColumn>();
}
return this.cols.Count;
}
}
/// <summary>
/// Add
/// </summary>
/// <param name="col"></param>
public void Add(DataColumn col)
{
if (this.cols == null)
{
this.cols = new List<DataColumn>();
}
this.cols.Add(col);
}
/// <summary>
/// Is Synchronized
/// </summary>
public bool IsSynchronized
{
get
{
return true;
}
}
/// <summary>
/// Sync Root
/// </summary>
public object SyncRoot
{
get
{
return null;
}
}
/// <summary>
/// Current
/// </summary>
public object Current
{
get
{
return cols[index];
}
}
/// <summary>
/// Copy To
/// </summary>
/// <param name="array"></param>
/// <param name="index"></param>
public void CopyTo(Array array, int index)
{
throw new NotImplementedException();
}
/// <summary>
/// 获取该集合的 System.Collections.IEnumerator
/// </summary>
/// <returns></returns>
public IEnumerator GetEnumerator()
{
return (IEnumerator)this; ;
}
/// <summary>
/// Move Next
/// </summary>
/// <returns></returns>
public bool MoveNext()
{
index++;
var isNext = index < cols.Count;
if (!isNext)
Reset();
return isNext;
}
/// <summary>
/// Reset
/// </summary>
public void Reset()
{
index = -1;
}
/// <summary>
/// Contains Key
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public bool ContainsKey(string name)
{
if (this.cols == null) return false;
return (this.cols.Any(it => it.ColumnName == name));
}
}
/// <summary>
/// 数据行集合
/// </summary>
public class DataRowCollection : IEnumerable, ICollection, IEnumerator
{
/// <summary>
/// Get item by index
/// </summary>
/// <param name="thisIndex"></param>
/// <returns></returns>
public DataRow this[int thisIndex]
{
get
{
return Rows[thisIndex];
}
}
private int index = -1;
private List<DataRow> Rows = null;
/// <summary>
/// Count
/// </summary>
public int Count
{
get
{
if (this.Rows == null)
{
this.Rows = new List<DataRow>();
}
return Rows.Count;
}
}
/// <summary>
/// Current
/// </summary>
public object Current
{
get
{
if (this.Rows == null)
{
this.Rows = new List<DataRow>();
}
return Rows[index];
}
}
/// <summary>
/// Is Synchronized
/// </summary>
public bool IsSynchronized
{
get
{
return true;
}
}
/// <summary>
/// Sync Root
/// </summary>
public object SyncRoot
{
get
{
return null;
}
}
/// <summary>
/// Copy To
/// </summary>
/// <param name="array"></param>
/// <param name="index"></param>
public void CopyTo(Array array, int index)
{
throw new NotImplementedException();
}
/// <summary>
/// 获取该集合的 System.Collections.IEnumerator。
/// </summary>
/// <returns></returns>
public IEnumerator GetEnumerator()
{
return (IEnumerator)this; ;
}
/// <summary>
/// Move Next
/// </summary>
/// <returns></returns>
public bool MoveNext()
{
index++;
var isNext = index < (Rows == null ? 0 : Rows.Count);
if (!isNext)
Reset();
return isNext;
}
/// <summary>
/// Reset
/// </summary>
public void Reset()
{
index = -1;
}
/// <summary>
/// Add
/// </summary>
/// <param name="daRow"></param>
internal void Add(DataRow daRow)
{
if (Rows == null)
{
Rows = new List<DataRow>();
}
Rows.Add(daRow);
}
}
/// <summary>
/// 数据行
/// </summary>
public class DataRow
{
private Dictionary<string, object> obj = new Dictionary<string, object>();
/// <summary>
/// Add
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
public void Add(string key, object value)
{
obj.Add(key, value);
}
/// <summary>
/// Get Item By Name
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public object this[string name]
{
get
{
return obj[name];
}
}
public object this[DataColumn column]
{
get
{
return obj[column.ColumnName];
}
}
/// <summary>
/// Get Item By Index
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
public object this[int index]
{
get
{
int i = 0;
object reval = null;
foreach (var item in obj)
{
if (i == index)
{
reval = item.Value;
break;
}
i++;
}
return reval;
}
}
/// <summary>
/// Contains Key
/// </summary>
/// <param name="columnName"></param>
/// <returns></returns>
public bool ContainsKey(string columnName)
{
if (this.obj == null) return false;
return (this.obj.ContainsKey(columnName));
}
}
/// <summary>
/// 数据填充器
/// </summary>
@@ -469,17 +81,16 @@ namespace SqlSugar
for (int i = 0; i < dr.FieldCount; i++)
{
string name = dr.GetName(i).Trim();
if (!columns.ContainsKey(name))
if (!columns.Contains(name))
columns.Add(new DataColumn(name, dr.GetFieldType(i)));
}
while (dr.Read())
{
DataRow daRow = new DataRow();
DataRow daRow = dt.NewRow();
for (int i = 0; i < columns.Count; i++)
{
if (!daRow.ContainsKey(columns[i].ColumnName))
daRow.Add(columns[i].ColumnName, dr.GetValue(i));
daRow[columns[i].ColumnName]=dr.GetValue(i);
}
dt.Rows.Add(daRow);
}
@@ -507,17 +118,16 @@ namespace SqlSugar
for (int i = 0; i < dr.FieldCount; i++)
{
string name = dr.GetName(i).Trim();
if (!columns.ContainsKey(name))
if (!columns.Contains(name))
columns.Add(new DataColumn(name, dr.GetFieldType(i)));
}
while (dr.Read())
{
DataRow daRow = new DataRow();
DataRow daRow = dt.NewRow();
for (int i = 0; i < columns.Count; i++)
{
if (!daRow.ContainsKey(columns[i].ColumnName))
daRow.Add(columns[i].ColumnName, dr.GetValue(i));
daRow[columns[i].ColumnName]=dr.GetValue(i);
}
dt.Rows.Add(daRow);
}
@@ -596,17 +206,16 @@ namespace SqlSugar
for (int i = 0; i < dr.FieldCount; i++)
{
string name = dr.GetName(i).Trim();
if (!columns.ContainsKey(name))
if (!columns.Contains(name))
columns.Add(new DataColumn(name, dr.GetFieldType(i)));
}
while (dr.Read())
{
DataRow daRow = new DataRow();
DataRow daRow = dt.NewRow();
for (int i = 0; i < columns.Count; i++)
{
if (!daRow.ContainsKey(columns[i].ColumnName))
daRow.Add(columns[i].ColumnName, dr.GetValue(i));
daRow[columns[i].ColumnName] = dr.GetValue(i);
}
dt.Rows.Add(daRow);
}
@@ -634,17 +243,16 @@ namespace SqlSugar
for (int i = 0; i < dr.FieldCount; i++)
{
string name = dr.GetName(i).Trim();
if (!columns.ContainsKey(name))
if (!columns.Contains(name))
columns.Add(new DataColumn(name, dr.GetFieldType(i)));
}
while (dr.Read())
{
DataRow daRow = new DataRow();
DataRow daRow = dt.NewRow();
for (int i = 0; i < columns.Count; i++)
{
if (!daRow.ContainsKey(columns[i].ColumnName))
daRow.Add(columns[i].ColumnName, dr.GetValue(i));
daRow[columns[i].ColumnName] = dr.GetValue(i);
}
dt.Rows.Add(daRow);
}
@@ -724,17 +332,16 @@ namespace SqlSugar
for (int i = 0; i < dr.FieldCount; i++)
{
string name = dr.GetName(i).Trim();
if (!columns.ContainsKey(name))
if (!columns.Contains(name))
columns.Add(new DataColumn(name, dr.GetFieldType(i)));
}
while (dr.Read())
{
DataRow daRow = new DataRow();
DataRow daRow = dt.NewRow();
for (int i = 0; i < columns.Count; i++)
{
if (!daRow.ContainsKey(columns[i].ColumnName))
daRow.Add(columns[i].ColumnName, dr.GetValue(i));
daRow[columns[i].ColumnName] = dr.GetValue(i);
}
dt.Rows.Add(daRow);
}
@@ -762,17 +369,16 @@ namespace SqlSugar
for (int i = 0; i < dr.FieldCount; i++)
{
string name = dr.GetName(i).Trim();
if (!columns.ContainsKey(name))
if (!columns.Contains(name))
columns.Add(new DataColumn(name, dr.GetFieldType(i)));
}
while (dr.Read())
{
DataRow daRow = new DataRow();
DataRow daRow = dt.NewRow();
for (int i = 0; i < columns.Count; i++)
{
if (!daRow.ContainsKey(columns[i].ColumnName))
daRow.Add(columns[i].ColumnName, dr.GetValue(i));
daRow[columns[i].ColumnName] = dr.GetValue(i);
}
dt.Rows.Add(daRow);
}
@@ -852,17 +458,16 @@ namespace SqlSugar
for (int i = 0; i < dr.FieldCount; i++)
{
string name = dr.GetName(i).Trim();
if (!columns.ContainsKey(name))
if (!columns.Contains(name))
columns.Add(new DataColumn(name, dr.GetFieldType(i)));
}
while (dr.Read())
{
DataRow daRow = new DataRow();
DataRow daRow = dt.NewRow();
for (int i = 0; i < columns.Count; i++)
{
if (!daRow.ContainsKey(columns[i].ColumnName))
daRow.Add(columns[i].ColumnName, dr.GetValue(i));
daRow[columns[i].ColumnName] = dr.GetValue(i);
}
dt.Rows.Add(daRow);
}
@@ -890,17 +495,16 @@ namespace SqlSugar
for (int i = 0; i < dr.FieldCount; i++)
{
string name = dr.GetName(i).Trim();
if (!columns.ContainsKey(name))
if (!columns.Contains(name))
columns.Add(new DataColumn(name, dr.GetFieldType(i)));
}
while (dr.Read())
{
DataRow daRow = new DataRow();
DataRow daRow = dt.NewRow();
for (int i = 0; i < columns.Count; i++)
{
if (!daRow.ContainsKey(columns[i].ColumnName))
daRow.Add(columns[i].ColumnName, dr.GetValue(i));
daRow[columns[i].ColumnName] = dr.GetValue(i);
}
dt.Rows.Add(daRow);
}
@@ -980,17 +584,16 @@ namespace SqlSugar
for (int i = 0; i < dr.FieldCount; i++)
{
string name = dr.GetName(i).Trim();
if (!columns.ContainsKey(name))
if (!columns.Contains(name))
columns.Add(new DataColumn(name, dr.GetFieldType(i)));
}
while (dr.Read())
{
DataRow daRow = new DataRow();
DataRow daRow = dt.NewRow();
for (int i = 0; i < columns.Count; i++)
{
if (!daRow.ContainsKey(columns[i].ColumnName))
daRow.Add(columns[i].ColumnName, dr.GetValue(i));
daRow[columns[i].ColumnName] = dr.GetValue(i);
}
dt.Rows.Add(daRow);
}
@@ -1018,17 +621,16 @@ namespace SqlSugar
for (int i = 0; i < dr.FieldCount; i++)
{
string name = dr.GetName(i).Trim();
if (!columns.ContainsKey(name))
if (!columns.Contains(name))
columns.Add(new DataColumn(name, dr.GetFieldType(i)));
}
while (dr.Read())
{
DataRow daRow = new DataRow();
DataRow daRow = dt.NewRow();
for (int i = 0; i < columns.Count; i++)
{
if (!daRow.ContainsKey(columns[i].ColumnName))
daRow.Add(columns[i].ColumnName, dr.GetValue(i));
daRow[columns[i].ColumnName] = dr.GetValue(i);
}
dt.Rows.Add(daRow);
}

View File

@@ -1,6 +1,8 @@
using System;
using System.Text.RegularExpressions;
using System.Linq;
using System.Data;
namespace SqlSugar
{
public interface IDataAdapter