在 LINQPad 中将 SQL 查询结果转换为 C# 字典

Convert SQL query result to C# Dictionary in LINQPad

假设我在 SQL table 中有以下数据:

ID  A1  A2
0   1   abc
1   2   def
2   1   ghi

我有一个问题:

SELECT ID, A2 FROM MyTable WHERE A1 = 1

这将 return 两条记录,ID 0 和 2。

我想 运行 在 LINQpad 中进行此查询,并将结果 return 作为字典集合。显然key是ID,value是A2的值。

LINQpad 通过右上角的 "Connection" 下拉菜单连接到数据库。我处于 "C# Program" 模式,我认为这是导致问题的原因,因为我尝试过的每个示例似乎都处于语句或表达式模式。不过,我想让它在程序模式下工作,这样我就可以从其他程序中 运行 这个。

首先,您需要在 LINQPad 下拉列表中添加到数据库的连接。如果您的 table 名为 MyTable,这将使您能够访问名为 MyTables 的 LINQPad 对象。现在下面的代码(在 LINQPad C# 程序模式下)应该 return 一个字典对象:

void Main()
{

    var result = MyTables
                .Where(mc => mc.A1 == 1)
                .ToDictionary(m => m.ID.ToString(), 
                              m => m.A2.ToString());
    result.Dump();
}

Responding to James Curran, you don't need the .ToString() amended below:

void Main()
{

    var result = MyTables
                .Where(mc => mc.A1 == 1)
                .ToDictionary(m => m.ID, 
                              m => m.A2);
    result.Dump();
}