mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-20 21:08:16 +08:00
ExpreessTree替代反射缓存(1)
This commit is contained in:
@ -66,13 +66,15 @@ namespace FreeSql.Internal.CommonProvider {
|
||||
public List<T> Query<T>(CommandType cmdType, string cmdText, params DbParameter[] cmdParms) {
|
||||
var names = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
|
||||
var ret = new List<T>();
|
||||
var type = typeof(T);
|
||||
var defaultValue = default(T);
|
||||
ExecuteReader(dr => {
|
||||
if (names.Any() == false)
|
||||
for (var a = 0; a < dr.FieldCount; a++) names.Add(dr.GetName(a), a);
|
||||
object[] values = new object[dr.FieldCount];
|
||||
object[] values = new object[names.Count];
|
||||
dr.GetValues(values);
|
||||
var read = Utils.ExecuteArrayRowReadClassOrTuple(typeof(T), names, values, 0);
|
||||
ret.Add(read.value == null ? default(T) : (T)read.value);
|
||||
var read = Utils.ExecuteArrayRowReadClassOrTuple(type, names, values, 0);
|
||||
ret.Add(read.Value == null ? defaultValue : (T)read.Value);
|
||||
}, cmdType, cmdText, cmdParms);
|
||||
return ret;
|
||||
}
|
||||
|
@ -23,7 +23,7 @@ namespace FreeSql.Internal.CommonProvider {
|
||||
var ret = new List<T>();
|
||||
foreach (var row in ds) {
|
||||
var read = Utils.ExecuteArrayRowReadClassOrTuple(typeof(T), names, row);
|
||||
ret.Add(read.value == null ? default(T) : (T) read.value);
|
||||
ret.Add(read.Value == null ? default(T) : (T) read.Value);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
Reference in New Issue
Block a user