如何使用Linqpad在C#语句/程序中运行SQL查询?

时间:2017-08-16 07:49:59

标签: c# linqpad

如何使用Linqpad在C#语句或C#程序中运行SQL查询?

是的,出于兼容性原因,我必须将SQL语句与Linq混合使用。我使用linqpad和postgres驱动程序,这些驱动程序不识别postgres的hstore。我已经知道我可以通过使用经典SQL获得这些被忽略的列。

4 个答案:

答案 0 :(得分:2)

您可以使用LinqPad上的ExecuteCommand直接在C#语句上运行SQL语句。您可以使用带有{0},{1}等

的参数格式化命令字符串来执行SQL语句

ExecuteCommand("DELETE FROM TableOne where PrimaryKey = {0}", primaryKey);

ExecuteCommand

答案 1 :(得分:0)

您是否尝试过在LINQPad中建立连接? PostgreSQL还有一个可供下载的驱动程序吗?设置连接后,可以运行SQL或C#

答案 2 :(得分:0)

我找到了部分解决方案:

this.Command.CommandText = "select * from items LIMIT 50;";
var result = this.Command.ExecuteReader().Dump();

但结果变量是IDataReader ...而不是集合。奇怪的是Dump()方法正确显示网格。

答案 3 :(得分:0)

我有一个问题,我想只使用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,然后可以轻松查询。