in src/Apache.IoTDB.Data/DataReaderExtensions.cs [38:76]
public static List<T> ToObject<T>(this IDataReader dataReader)
{
List<T> jArray = new List<T>();
try
{
var t = typeof(T);
var pots = t.GetProperties();
while (dataReader.Read())
{
T jObject = Activator.CreateInstance<T>();
for (int i = 0; i < dataReader.FieldCount; i++)
{
try
{
string strKey = dataReader.GetName(i);
if (dataReader[i] != DBNull.Value)
{
var pr = from p in pots where (p.Name == strKey || p.ColumnNameIs(strKey)) && p.CanWrite select p;
if (pr.Any())
{
var pi = pr.FirstOrDefault();
pi.SetValue(jObject, Convert.ChangeType(dataReader[i], pi.PropertyType));
}
}
}
catch (Exception)
{
}
}
jArray.Add(jObject);
}
}
catch (Exception ex)
{
IoTDBException.ThrowExceptionForRC(-10002, $"ToObject<{nameof(T)}> Error", ex);
}
return jArray;
}