首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用linq2db执行原始SQL字符串

使用linq2db执行原始SQL字符串
EN

Stack Overflow用户
提问于 2018-01-08 19:47:48
回答 3查看 8.8K关注 0票数 7

使用linq2db (https://github.com/linq2db/linq2db),我可以执行一个原始的SQL字符串并以dynamic的形式获得结果吗?

我正在寻找类似于ADO.NET的DBCommand.ExecuteReader或Dapper的Query<dynamic>之类的东西。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-01-11 11:01:52

您可以自己轻松地实现它:

代码语言:javascript
复制
            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);
            }
票数 5
EN

Stack Overflow用户

发布于 2018-05-04 07:38:44

首先,您需要创建一个类,它具有与查询结果一样多的属性。

第二件重要的事情是,您需要向这个类的每个属性添加属性,以匹配在执行这个"select“之后产生的列名。例如:[Column(@"user_firstname")]

之后,可以将该类放入查询的调用中。我可以证明:

代码语言:javascript
复制
using (var db = new TestDB())
{
   var usersList = db.Query<YourCustomClass>("your select query here").ToList();
}

现在,您将在您的"YourCustomClass“类型列表中获得所有数据。

我希望这就是你一直在寻找的答案。

票数 9
EN

Stack Overflow用户

发布于 2018-01-11 10:47:23

linq2db是强类型的,但是可以执行原始sql并将结果映射到匿名类。例如:

代码语言:javascript
复制
var result = ExecuteAnonymous(db, 
    "select id, name from sysobjects", 
    new { id = 0, name = "" });

其中ExecuteAnonumous是助手方法:

代码语言:javascript
复制
IQueryable<T> ExecuteAnonymous(DataConnection db, string sql, T typeObject)
{
    return db.Query<T>(sql);
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48157120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档