首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在NPoco中处理任意查询

在NPoco中处理任意查询
EN

Stack Overflow用户
提问于 2014-09-02 06:08:38
回答 2查看 3K关注 0票数 1

我觉得这里缺少一些显而易见的东西,我如何通过NPoco运行一个查询,从而检索任意数量的可能不同类型的值。

示例

假设我有一张桌子看起来像这样:

代码语言:javascript
复制
|-------------------|------------|
| ID    |    AMOUNT | DATE       |
|-------------------|------------|
| 1     |      2300 | 01/02/2014 |
| 2     |       400 | 03/02/2014 |
| 3     |      1200 | 06/02/2014 |
| 4     |       950 | 06/02/2014 |
|-------------------|------------|

我想用以下(MSSQL)查询这个表:

代码语言:javascript
复制
SELECT
MAX(DATE) AS MOST_RECENT_ORDER_DATE, SUM(AMOUNT) AS TOTAL_AMT_OF_ORDERS
FROM
ORDERS

所以我想我应该使用类似于下面的代码,其中db是一个NPoco Database对象。

代码语言:javascript
复制
var result = db.Query(<query string>);

问题是NPoco的查询方法需要一个类型参数,我不知道该给它什么。问题是这两个值实际上有不同的类型,一个是DateTime,另一个是int。我尝试使用以下方法:

代码语言:javascript
复制
List<Dictionary<string, object>> result;
result = db.Query<Dictionary<string, object>>(queryString).ToList();

但是我无法理解访问/使用结果的语法,而且这一切看起来都很笨拙,我肯定我做错了。

概括如下:

如何使用NPoco运行不同(任意)类型的查询返回列,然后访问和使用这些值?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-02 06:29:39

你走在正确的轨道上。查询只返回一行,因此您只需从结果中获取第一个字典:

代码语言:javascript
复制
result = db.Query<Dictionary<string, object>>(queryString)
var dictionary = result.First();

然后可以使用查询中的名称获取对象:

代码语言:javascript
复制
dictionary["MOST_RECENT_ORDER_DATE"]
dictionary["TOTAL_AMT_OF_ORDERS"]

之后,您可以简单地将对象转换为所需的数据类型。(例如,使用转换方法

票数 3
EN

Stack Overflow用户

发布于 2014-09-02 06:27:48

尝试使用db.FirstOfDefault<Dictionary<string, object>>(queryString)而不是db.Query,然后简单地从字典中获取值(键是列名)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25616871

复制
相关文章

相似问题

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