【发布时间】:2017-08-16 07:49:59
【问题描述】:
如何使用 Linqpad 在 C# 语句或 C# 程序中运行 SQL 查询?
是的,出于兼容性原因,我必须将 SQL 语句与 Linq 混合使用。我将 linqpad 与 postgres 驱动程序一起使用,这些驱动程序无法识别 postgres 的 hstore。我已经知道我可以使用经典 SQL 来获取这些被忽略的列。
【问题讨论】:
如何使用 Linqpad 在 C# 语句或 C# 程序中运行 SQL 查询?
是的,出于兼容性原因,我必须将 SQL 语句与 Linq 混合使用。我将 linqpad 与 postgres 驱动程序一起使用,这些驱动程序无法识别 postgres 的 hstore。我已经知道我可以使用经典 SQL 来获取这些被忽略的列。
【问题讨论】:
【讨论】:
ExecuteCommand()可用,但是如果您尝试运行脚本,则在您尝试运行它和其他sql命令方法后应该修复自动完成应该是可见的
您是否尝试过在 LINQPad 中设置连接?是否有 PostgreSQL 的驱动程序可供下载?建立连接后,您可以运行 SQL 或 C#
【讨论】:
我找到了部分解决方案:
this.Command.CommandText = "select * from items LIMIT 50;";
var result = this.Command.ExecuteReader().Dump();
但是结果变量是一个 IDataReader...而不是一个集合。奇怪的是 Dump() 方法正确显示了一个网格。
【讨论】:
this.ExecuteQuery<Items>("select * from items LIMIT 50;").Dump() 吗?
我有同样的问题,我想只使用 LINQ 查询 PostgreSQL 表中的 HStore 字段。
以前我在 LINQPad 中切换到 SQL 并以这种方式处理问题。但是,如果您在查询 HStore 字段之前使用 .ToList() 或其他方式实现查询,则 LINQPad 可以很好地应对。
例如,我有一个“调查”表,其中 AssetId 字段是一个简单的文本字段,它“描述”与另一个表的关系,然后是一个 Values HStore 字段,其中包含调查结果,可以包括几个不同的领域。因此,如果我想查找具有“number_lanes”值的“ROAD”的所有调查,那么我的 LINQ 查询是:
AssetsSurveys.Where (a => a.AssetId.StartsWith("ROAD-")).ToList().Where(a => a.Values.ContainsKey("number_lanes"))
中间的.ToList() 导致HStore 字段被具体化为Dictionary,然后可以轻松查询。
【讨论】: