使用linq2db (https://github.com/linq2db/linq2db),我可以执行一个原始的SQL字符串并以dynamic的形式获得结果吗?
我正在寻找类似于ADO.NET的DBCommand.ExecuteReader或Dapper的Query<dynamic>之类的东西。
发布于 2018-01-11 11:01:52
您可以自己轻松地实现它:
foreach (var rec in DataConnection.Query<dynamic>(reader =>
{
IDictionary<string, object> eo = new ExpandoObject();
for (var index = 0; index < reader.FieldCount; index++)
{
eo.Add(reader.GetName(index), reader.GetValue(index));
}
return eo;
}, "select first 2 \"Guid\", \"DongleID\" from \"Sellings\""))
{
Console.WriteLine(rec.DongleID);
}发布于 2018-05-04 07:38:44
首先,您需要创建一个类,它具有与查询结果一样多的属性。
第二件重要的事情是,您需要向这个类的每个属性添加属性,以匹配在执行这个"select“之后产生的列名。例如:[Column(@"user_firstname")]。
之后,可以将该类放入查询的调用中。我可以证明:
using (var db = new TestDB())
{
var usersList = db.Query<YourCustomClass>("your select query here").ToList();
}现在,您将在您的"YourCustomClass“类型列表中获得所有数据。
我希望这就是你一直在寻找的答案。
发布于 2018-01-11 10:47:23
linq2db是强类型的,但是可以执行原始sql并将结果映射到匿名类。例如:
var result = ExecuteAnonymous(db,
"select id, name from sysobjects",
new { id = 0, name = "" });其中ExecuteAnonumous是助手方法:
IQueryable<T> ExecuteAnonymous(DataConnection db, string sql, T typeObject)
{
return db.Query<T>(sql);
}https://stackoverflow.com/questions/48157120
复制相似问题