mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-10-15 18:55:07 +08:00
NET CORE supports native Datatable
This commit is contained in:
@@ -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();
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -1,6 +1,8 @@
|
||||
using System;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Linq;
|
||||
using System.Data;
|
||||
|
||||
namespace SqlSugar
|
||||
{
|
||||
public interface IDataAdapter
|
||||
|
Reference in New Issue
Block a user