Что-то вроде этого будет делать то, что вы хотите, я думаю ...
List<sqlprop> sqlprop= read
.readrows("SELECT * FROM test")
.Tables[0]
.Rows
.Cast<DataRow>()
.Select(r => new sqlprop
{
data1 = r.GetString(0),
data2 = r.GetString(1)
})
.ToList();
Вы должны проверить DBNull.Value и, возможно, включить имя столбца в запрос SQL и т. Д., И т. Д., Но вы поняли идею.
Обновление
Если вам нужно, чтобы оно было универсальным, а имя столбца в базе данных точно совпадало с именем свойства, вы могли бы сделать что-то вроде этого (не проверено, у меня нет компилятора здесь, но он должен дать вам идею):
List<sqlprop> sqlprop= read
.readrows("SELECT * FROM test")
.Tables[0]
.Rows
.Cast<DataRow>()
.Select(r => {
var ret = new sqlprop();
foreach (var p in ret.GetType().GetProperties())
{
object val = r[r.Table.Columns.IndexOf(p.Name)];
if (val != DBNull.Value)
{
p.SetValue(ret, val, null);
}
}
return ret;
})
.ToList();
ПРИМЕЧАНИЕ: это немного ненадежно и не супер эффективно, но в любом случае, вот оно!