映射到 PetaPoco 中的集合?

2023-12-21

有没有办法将以下内容映射到Dictionary<int,int>?看起来它为尽可能多的返回结果生成行,但它们没有值......

Sql sql = new Sql()
    .Append("SELECT Count(*) as 'Answer Count', QuestionId")
    .Append("FROM CF.Answers")
    .Append("WHERE SurveyId = @0", surveyId)
    .Append("GROUP BY QuestionId");

var result = database.Fetch<Dictionary<int,int>>(sql);

fetch 总是返回一个List<T>

事实是Fetch<T>()方法返回一个List<T>意味着在您的代码示例中它返回

List<Dictionary<int, int>> result = ...

这可能不是您想要的,并且每个字典只包含一个项目,这击败了您首先想要拥有一本字典的全部原因。据我了解你的问题,你实际上想得到:

Dictionary<int, int> result = ...

当然还有扩展方法List<T>可以让您将其转换为其他类型。一种这样的方法是.ToDictionary()它可以将您的结果转换为您想要获得的字典。

第一个想法

现在我们手头的问题是我们可以使用什么类型 with Fetch方法?最初我想到了两件事:

KeyValuePair<int, int>
Tuple<int, int>

即使想法很好,但没有一个可行,因为Key财产在KeyValuePair没有公共 setter,第二个没有 PetaPoco 可以使用的无参数构造函数。

Solution

我们在这里留下的是创建一个类似于的自定义类型Tuple但就功能而言,我们实际上可以与 PetaPoco 一起使用。让我们使这个类型变得通用,这样我们就可以轻松地在不同类型中重用它:

public class Pair<T1, T2>
{
    public T1 Item1 { get; set; }
    public T2 Item2 { get; set; }
}

使用这个自定义类,我们现在可以轻松获取字典:

Sql sql = new Sql()
    .Append("SELECT QuestionId as Item1, COUNT(*) as Item2")
    .Append("FROM Answers")
    .Append("WHERE SurveyId = @0", surveyId)
    .Append("GROUP BY QuestionId");

var result = database
    .Fetch<Pair<int,int>>(sql)
    .ToDictionary(i => i.Item1, i => i.Item2);

请注意,我已经颠倒了选择字段的顺序(并将它们设置为不同的别名),因为您不希望计数成为字典键(因为它们可能会重复),而是问题 ID。因此,要么像我一样颠倒选择字段的顺序,要么提供正确的选择器.ToDictionary()扩展方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

映射到 PetaPoco 中的集合? 的相关文章

  • 数据模板绑定垃圾邮件输出窗口出现错误:找不到管理 FrameworkElemen

    我有问题 System Windows Data 错误 2 找不到目标元素的管理 FrameworkElement 或 FrameworkContentElement BindingExpression 无路径 数据项 空 目标元素是 So
  • QCombobox 向下箭头图像

    如何更改Qcombobox向下箭头图像 现在我正在使用这个 QSS 代码 但这不起作用 我无法删除向下箭头边框 QComboBox border 0px QComboBox down arrow border 0px background
  • 如何保证对象只有一个线程

    我有以下代码 class Service public void start creates thread which creates window and goes to message loop void stop sends WM C
  • 我如何理解这个 C 类型声明?

    double bar int double double double double 在查看讲座幻灯片时 我发现了留给学生的练习 用简单的英语来说 什么是类型bar在这个 C 声明中 Please帮助我解决这个问题 我什至不知道从哪里开始
  • 使用 Enumerable.OfType() 或 LINQ 查找特定类型的所有子控件

    Existed MyControl1 Controls OfType
  • 更改 Qt OpenGL 窗口示例以使用 OpenGL 3.3

    我正在尝试更改 Qt OpenGL 示例以使用更现代的 opengl 版本 330 似乎合适 所以我做了 在 main cpp 上设置版本和配置文件 设置着色器版本 更改着色器以使用统一 它现在构建没有任何错误 但我只看到一个空白窗口 我错
  • 如何在 C# / .NET 中创建内存泄漏[重复]

    这个问题在这里已经有答案了 可能的重复 托管代码中是否可能存在内存泄漏 特别是 C 3 0 https stackoverflow com questions 6436620 is it possible to have a memory
  • 信号处理程序有单独的堆栈吗?

    信号处理程序是否有单独的堆栈 就像每个线程都有单独的堆栈一样 这是在 Linux C 环境中 来自 Linux 手册页signal 7 http kernel org doc man pages online pages man7 sign
  • 指向特征矩阵的指针数组

    我在代码中使用 Eigen 的 MatrixXd 矩阵 在某个时刻我需要一个 3D 矩阵 由于 Eigen 没有三维矩阵类型 因为它仅针对线性代数进行了优化 因此我创建了一个 MatrixXd 类型的指针数组 Eigen MatrixXd
  • 动态生成的控件 ID 返回为 NULL

    我可以在 Page PreInit 函数中创建动态控件 如何检索控件及其 ID 我的 C 代码用于创建动态控件之一 var btn new WebForms Button btn Text btn ID Addmore btn Click
  • vs2008 c#:Facebook.rest.api如何使用它来获取好友列表?

    如何在此基础上取得进一步的进步 获取好友列表的下一步是什么 string APIKey ConfigurationManager AppSettings API Key string APISecret ConfigurationManag
  • 如何获取 QTableView 的标题列表?

    我有一个QTableView我的对话框中的对象 我需要访问该表的水平标题并将它们放入QStringList object 尽管进行了大量搜索 但我在 Qt 文档中找不到如何获取此标头列表 编辑 我发现的最接近的地方是this https w
  • 给出 5 个参数,但在终端中只得到 3 个参数

    我想将一个文件传递给一个c 程序 如果我在 IDE 中执行此操作 test string string lt test txt return argc 5 但在终端上我刚刚得到argc 3 看来 这是因为 什么是 lt 意思是 我正在使用
  • AES 输出是否小于输入?

    我想加密一个字符串并将其嵌入到 URL 中 因此我想确保加密的输出不大于输入 AES 是可行的方法吗 不可能创建任何始终会创建比输入更小的输出的算法 但可以将任何输出反转回输入 如果您允许 不大于输入 那么基本上您只是在谈论同构算法alwa
  • 运行选定的代码生成器时出错:“未将对象引用设置到对象的实例。”错误?

    我已经尝试了所有解决方案 例如修复 VS 2013 但没有用 当您通过右键单击控制器文件夹来创建控制器并添加控制器时 然后右键单击新创建的控制器的操作并选择添加视图 当我尝试创建视图时 就会发生这种情况 它不是一个新项目 而是一个现有项目
  • C# 中的 strstr() 等效项

    我有两个byte 我想找到第二个的第一次出现byte 在第一个byte 或其中的一个范围 我不想使用字符串来提高效率 翻译第一个byte to a string会效率低下 基本上我相信就是这样strstr 在 C 中做 最好的方法是什么 这
  • 使用taskkill停止Windows服务

    我需要帮助来使用 C 终止 Windows 服务 现在要终止该服务 请使用以下选项 从命令 sc queryex ServiceName 发现后PID服务的 taskkill pid 1234 exemple f 为了便于阅读 但如果您明白
  • 将 char[][] 转换为 char** 会导致段错误吗?

    好吧 我的 C 有点生疏了 但我想我应该用 C 来做我的下一个 小 项目 这样我就可以对其进行抛光 并且我已经有不到 20 行的段错误了 这是我的完整代码 define ROWS 4 define COLS 4 char main map
  • QFileDialog::getSaveFileName 和默认的 selectedFilter

    我有 getSaveFileName 和一些过滤器 我希望当用户打开 保存 对话框时选择其中之一 Qt 文档说明如下 可以通过将 selectedFilter 设置为所需的值来选择默认过滤器 我尝试以下变体 QString selFilte
  • xsi:type 属性搞乱了 C# XML 反序列化

    我使用 XSD exe 根据 XML 架构 xsd 文件 自动生成 C 对象 我正在反序列化 OpenCover 输出 但其中一个部分类未正确生成 这是导致异常的行

随机推荐

  • UICollectionView 无法折叠或删除补充视图

    我有一个使用流布局的 uicollectionview 它有一个补充标题视图 这是我有时只想显示的视图 所以基本上我想要一个按钮 当单击该按钮时 将从集合视图中删除补充视图 并在考虑到标题消失的情况下重新放置集合视图中的所有项目 这可能吗
  • 如何通过 CSS 在 UL/LI html 列表中设置项目符号颜色,而不使用任何图像或 span 标签 [重复]

    这个问题在这里已经有答案了 想象一个简单的未排序列表 其中包含一些 li 项目 现在 我已将子弹定义为方形 list style square 但是 如果我设置颜色 li li 项目与color F00 then 一切变红了 虽然我只想设置
  • Spring ClassPathXmlApplicationContext NullPointerException

    尝试使用弹簧 xml文件位于src下 我已经搜索过 但找不到问题所在 好像找不到xml文件 我收到以下错误 Exception in thread main java lang ExceptionInInitializerError at
  • 使用 GPU 获取数字列表的统计信息

    我的文件中有几个数字列表 例如 333 324 123 543 00054 2243 333 53343 4434 现在 我想使用 GPU 获取每个数字出现的次数 我相信这在 GPU 上比在 CPU 上执行得更快 因为每个线程可以处理一个列
  • 在 Matlab 中创建“多孔”中值滤波器

    我需要做的是在 Matlab 中创建一种用于图像处理的 特殊 中值滤波器 多孔 中值滤波器 这是一个排除区域中心元素的过滤器 对于标准中值滤波器 我使用medfilt2函数 但我无法将其掩码 内核 作为矩阵传递 它不是线性变换 例如 使用标
  • JPA Map 映射

    如何在不使用 Hibernate 类的情况下在 JPA 中映射 Map 虽然Subhendu Mahanta给出的答案是正确的 但 CollectionOfElements已弃用 您可以使用 ElementCollection反而 Elem
  • 如何格式化 R Shiny numericInput?

    我有一个闪亮的应用程序 其中有很多numericInput字段 我想要一种格式化的方法numericInput每 10 3 之间用逗号分隔的字段 例如 我想要 5 000 000 而不是 5000000 我可以在 R 中使用format a
  • knitr 中的 dygraph 不起作用

    当尝试使用 Knit 在 R 中编织我的 dygraph 时 library dygraphs dygraph nhtemp main New Haven Temperatures gt dyRangeSelector dateWindow
  • Azure 门户看不到 DevOps 组织 [帐户问题?]

    我在将 Azure Web App 连接到 Azure DevOps 组织时遇到问题 我以某种方式设法为一个 Web 应用程序做到了这一点 通过选择创建一个新的 DevOps 项目 但现在很难设置一个新的 Web 应用程序来链接到同一个 D
  • 反应本机如何将图像和onpress添加到可触摸中

    我在反应本机中有可触摸的 在可触摸的内部我有图像并且在新闻上像这样
  • Keras 有没有办法立即停止训练?

    我正在为我的自定义提前停止回调tf keras训练 为此我可以设置变量self model stop training True在回调函数之一中 例如on epoch end 然而 Keras 仅在当前 epoch 完成时才停止训练 即使我
  • 在 Java 中从 JButton 拖放到 JComponent

    我在互联网上搜索了如何将 JButton 拖放到对象的示例 但我无法使其工作 我的程序所做的是 当我单击按钮时 对象更新了一个字段 使用选定的 object setField 我希望能够通过拖动 JButton 而不是单击来完成此操作 我怎
  • 赋值的左侧必须是变量[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 对于以下方法 Override public void onCreateContextMenu ContextMenu menu
  • 找到第二大的元素

    在给定的数组中如何找到第二个 第三个 第四个或第五个值 另外 如果我们使用max python中的函数的复杂性顺序是多少 即与该函数相关的顺序max def nth largest li n li remove max li print m
  • VBA:字典内存问题?填充 dict、.removeall、填充问题

    因此 我在这里使用了一些代码 其中我使用一个字典来填充作为自定义类中的属性保存的两个不同的字典 我这样做是为了效率 注意 我有一个解决此问题的方法 即为我想要设置的每个属性使用字典 但这并不是太有效 大致这是我的代码 for iKey 1
  • ORDER_BY 日期 LIMIT 1 [重复]

    这个问题已经存在了 我有一个名为 notify 的表 其中包含 寻求者 捐赠者 日期 列 datetime 类型的日期列 它存储以下格式 YYYY MM DD HH MM SS我正在尝试从通知表中选择具有最新日期的 1 条记录 然后将该日期
  • WPF Datagrid selectitem = MVVM 中的 null

    我正在尝试使用 MVVM 模式来处理数据网格 问题是 每当我将绑定到 SelectedItem 的 VM 属性更改为 null 时 视图不会 取消选择 当前选定的项目 这是我在 xaml 中的绑定
  • 如何查找页面中的所有元素

    我知道有两种方法可以找到页面中的所有元素 document getElementsByTagName and document all 有更好的方法还是其中最好的方法之一 我正在制作一个元素选择器 主要用于练习 我想知道获取页面中所有元素的
  • 使用分类数据的Python堆积条形图

    我有一个 Pandas 数据框 1800 obs 看起来像这样 A B C D 1 CL0 CL1 CL2 CL0 2 CL2 CL1 CL1 CL3 3 CL3 CL2 CL0 CL1 n CL2 CL1 CL0 CL3 我想创建一个堆叠
  • 映射到 PetaPoco 中的集合?

    有没有办法将以下内容映射到Dictionary