QueryOver 上的 GroupBy SqlFunction

2024-01-12

我有一个包含所有不同帐户名称前缀 (a-z) 的列表,我使用这些前缀获取的

var accounts = this.SessionManager.GetActiveSession().QueryOver<Account>();

var q = accounts.Select(Projections.Distinct(
        Projections.SqlFunction("substring", 
                                NHibernateUtil.String, 
                                Projections.Property("Name"),
                                Projections.Constant(1),
                                Projections.Constant(1))));

但是,我想要做的不是返回不同的列表,而是对前缀进行分组并返回以该前缀开头的帐户数量,但我不确定如何通过使用查询来执行分组,因为它不像标准那么简单林克。

我使用 QueryOver 而不是 Query 的原因是因为出于某种原因,子字符串函数是在内存中而不是在数据库服务器上执行的。

这就是我通常会做的

var prefixes = (from acc in this.SessionManager.GetActiveSession().Query<Account>()
              group acc by acc.Name.Substring(0, 1)
              into grp
              select new
                       {
                         Prefix = grp.Key,
                         Count = grp.Count()
                       });

Edit这是我尝试过的,但收到以下错误

表达式中无法识别的方法调用 SqlFunction("substring", NHibernateUtil.String, new [] {Property("Name"), Constant(Convert(1)), Constant(Convert(1))})

var accounts = this.SessionManager.GetActiveSession().QueryOver<Account>().Select(
            Projections.Group<string>(x => Projections.SqlFunction("substring", NHibernateUtil.String,
                                                       Projections.Property("Name"), Projections.Constant(1),
                                                       Projections.Constant(1))),
            Projections.Count<string>(x => Projections.SqlFunction("substring", NHibernateUtil.String,
                                                       Projections.Property("Name"), Projections.Constant(1),
                                                       Projections.Constant(1)))

          );

如果其他方法都失败,您可以使用 Projections.SqlGroupProjection 来完成此操作!

var accounts = _busDb.Session.QueryOver<QueueEntity>()
        .Select(
            Projections.SqlGroupProjection(
                "SUBSTRING({alias}.Name, 1) as FirstChar", 
                "SUBSTRING({alias}.Name, 1)",
                new[] {"FirstChar"},
                new[] {NHibernateUtil.String}),
            Projections.Count("id"));

第一个参数是在选择中选择的内容,第二个参数是分组依据的内容,第三个参数是所选列的名称,第四个参数是所选数据的类型。

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

QueryOver 上的 GroupBy SqlFunction 的相关文章

  • 当我使用“control-c”关闭发送对等方的套接字时,为什么接收对等方的套接字不断接收“”

    我是套接字编程的新手 我知道使用 control c 关闭套接字是一个坏习惯 但是为什么在我使用 control c 关闭发送进程后 接收方上的套接字不断接收 在 control c 退出进程后 发送方的套接字不应该关闭吗 谢谢 我知道使用
  • C++ 子字符串返回错误结果

    我有这个字符串 std string date 20121020 我正在做 std cout lt lt Date lt lt date lt lt n std cout lt lt Year lt lt date substr 0 4 l
  • 使闭包捕获的变量变得易失性

    闭包捕获的变量如何与不同线程交互 在下面的示例代码中 我想将totalEvents 声明为易失性的 但C 不允许这样做 是的 我知道这是错误的代码 这只是一个例子 private void WaitFor10Events volatile
  • 如何将图像和 POST 数据上传到 Azure 移动服务 ApiController 终结点?

    我正在尝试上传图片and POST表单数据 尽管理想情况下我希望它是json 到我的端点Azure 移动服务应用 我有ApiController method HttpPost Route api upload databaseId sea
  • 指针减法混乱

    当我们从另一个指针中减去一个指针时 差值不等于它们相距多少字节 而是等于它们相距多少个整数 如果指向整数 为什么这样 这个想法是你指向内存块 06 07 08 09 10 11 mem 18 24 17 53 7 14 data 如果你有i
  • 如何将图像路径保存到Live Tile的WP8本地文件夹

    我正在更新我的 Windows Phone 应用程序以使用新的 WP8 文件存储 API 本地文件夹 而不是 WP7 API 隔离存储文件 旧的工作方法 这是我如何成功地将图像保存到 共享 ShellContent文件夹使用隔离存储文件方法
  • 在数据库中搜索时忽略空文本框

    此代码能够搜索数据并将其加载到DataGridView基于搜索表单文本框中提供的值 如果我将任何文本框留空 则不会有搜索结果 因为 SQL 查询是用 AND 组合的 如何在搜索 从 SQL 查询或 C 代码 时忽略空文本框 private
  • 将自定义元数据添加到 jpeg 文件

    我正在开发一个图像处理项目 C 我需要在处理完成后将自定义元数据写入 jpeg 文件 我怎样才能做到这一点 有没有可用的图书馆可以做到这一点 如果您正在谈论 EXIF 元数据 您可能需要查看exiv2 http www exiv2 org
  • Qt表格小部件,删除行的按钮

    我有一个 QTableWidget 对于所有行 我将一列的 setCellWidget 设置为按钮 我想将此按钮连接到删除该行的函数 我尝试了这段代码 它不起作用 因为如果我只是单击按钮 我不会将当前行设置为按钮的行 ui gt table
  • 从库中捕获主线程 SynchronizationContext 或 Dispatcher

    我有一个 C 库 希望能够将工作发送 发布到 主 ui 线程 如果存在 该库可供以下人员使用 一个winforms应用程序 本机应用程序 带 UI 控制台应用程序 没有 UI 在库中 我想在初始化期间捕获一些东西 Synchronizati
  • 如何在 VBA 中声明接受 XlfOper (LPXLOPER) 类型参数的函数?

    我在之前的回答里发现了问题 https stackoverflow com q 19325258 159684一种无需注册即可调用 C xll 中定义的函数的方法 我之前使用 XLW 提供的注册基础结构 并且使用 XlfOper 类型在 V
  • WHERE NOT EXIST 附近的语法错误

    我在堆栈中搜索 但没有一个达到最终答案 我的查询是这样的 INSERT INTO user username frequence autoSend VALUES feri2 3 1 WHERE NOT EXISTS SELECT FROM
  • 更改mysql数据库表中的日期格式

    大家早上好 只是一个简单的问题 在我现有的 MySql 数据库中 我几乎没有包含日期 的列 目前这些是年 月 日格式 但现在我需要将其全部更改为年 月 日格式 我试过了select date format curdate d m Y 但它不
  • 在同一查询中选择 Count of ip 和 Count of DISTINCT ip

    我有一个这样的表结构 TABLE NAME counter id datetime url ip 1 2013 04 12 13 27 09 url1 ip01 2 2013 04 13 10 55 43 url2 ip02 3 2013
  • 将文本叠加在图像背景上并转换为 PDF

    使用 NET 我想以编程方式创建一个 PDF 它仅包含一个背景图像 其上有两个具有不同字体和位置的标签 我已阅读过有关现有 PDF 库的信息 但不知道 如果适用 哪一个对于如此简单的任务来说最简单 有人愿意指导我吗 P D 我不想使用生成的
  • NHibernate - CreateCriteria 与 CreateAlias

    假设以下场景 class Project public Job Job class Job public Name 假设我想使用 Criteria API 搜索其 Job 名称为 sumthing 的所有项目 我可以使用 CreateAli
  • const、span 和迭代器的问题

    我尝试编写一个按索引迭代容器的迭代器 AIt and a const It两者都允许更改容器的内容 AConst it and a const Const it两者都禁止更改容器的内容 之后 我尝试写一个span
  • mysql-connector-c++ - “get_driver_instance”不是“sql::mysql”的成员

    我是 C 的初学者 我认为学习的唯一方法就是接触一些代码 我正在尝试构建一个连接到 mysql 数据库的程序 我在 Linux 上使用 g 没有想法 我运行 make 这是我的错误 hello cpp 38 error get driver
  • 使用按位运算符相乘

    我想知道如何使用按位运算符将一系列二进制位相乘 但是 我有兴趣这样做来查找二进制值的十进制小数值 这是我正在尝试做的一个例子 假设 1010010 我想使用每个单独的位 以便将其计算为 1 2 1 0 2 2 1 2 3 0 2 4 虽然我
  • 恢复上传文件控制

    我确实阅读了以下帖子 C 暂停 恢复上传 https stackoverflow com questions 1048330 pause resume upload in c 使用 HTTP 恢复上传 https stackoverflow

随机推荐

  • 在 ExtJS 中,如何循环菜单项?

    如何循环遍历 ExtJS 工具栏菜单中的所有项目 例如更改其图标 使用 each 方法混合系列 http dev sencha com deploy dev docs class Ext util MixedCollection按钮菜单中的
  • 为什么 XmlDocument.LoadXml 抛出 System.Net.WebException?

    为什么System Xml XmlDocument LoadXml方法抛出System Net WebException 这真是令人难以置信的疯狂 如果MSDN http msdn microsoft com en us library s
  • python 中的专用 @property 装饰器

    我有几个类 每个类都有许多属性 所有属性的共同点是它们应该是数字属性 这似乎是使用 python 装饰器的理想场所 但我似乎无法完全理解正确的实现是什么 这是一个简单的例子 class Junk object def init self v
  • 在 VSCode 中包含 d.ts 类型定义文件

    我已经开始使用 VSCode 0 7 0 并注意到注释说你不必添加 不再参考 引入 jsconfig json 后 您不再需要在每个文件中使用 引用 这些在 VS Code 的初始版本中是必需的 由于文件集是在 jsconfig json
  • python Anaconda 中的 Mayavi

    我安装了mayavi在 Anaconda 中使用命令 conda exe install mayavi 在 Anaconda 命令提示符中 现在 当我关闭 Spyder 时 它就不再打开了 我该如何解决 我正在使用Windows 我想展示我
  • 如何避免Python API服务器中的重复处理? [复制]

    这个问题在这里已经有答案了 假设一个函数detect primes调用起来很昂贵 我想避免使用重复的参数重复调用它 我应该怎么办 使用缓存没有帮助 因为该函数可能会在不同的请求中同时调用 当两个请求都将缓存视为空值时 两个请求都将继续执行昂
  • C++ 中的句柄是什么?

    有人告诉我 句柄有点像指针 但其实不是 它允许您保留对对象的引用 而不是对象本身 更详细的解释是什么 句柄可以是从整数索引到指向内核空间中资源的指针的任何内容 其想法是 它们提供了资源的抽象 因此您无需了解太多有关资源本身的信息即可使用它
  • 直接在 Excel 工作表上使用 ActiveX 控件的必要和充分要求是什么?

    Microsoft Office 支持文章 添加或注册 ActiveX 控件 https support office com en us article Add or register an ActiveX control 8fc743a
  • 枚举和 android 注释 intDef

    我有一个枚举 public enum AppEnums SERVICE ERROR CONNECTION ERROR 我想在 Android 注释的 intDef 中使用它 IntDef AppEnums CONNECTION ERROR
  • 在 Kotlin 中实例化对象时如何重写方法?

    在Java中 要在实例化新对象时重写方法 我们可以这样做 public ActivityTestRule
  • 如何在从 Flutter 创建文档到 Firestore 时添加时间戳 [重复]

    这个问题在这里已经有答案了 我正在编写代码以将数据从 flutter 设置到 Firestore 我想要的是添加一个用于创建数据的时间的字段 例如 createdOn Flutter 的 DateTime now 从设备获取时间 但我想获取
  • 简单的Java“新”概念问题

    编译器显示错误new Stock 2 after expect public class TestStockUI Stock stock new Stock 2 stock 0 new Stock Microsoft MSFT 15 69
  • 如何在 SQL Server 2008 上找到禁用的索引

    不久前 当我向 SQL Server 数据库中执行一些批量数据插入时 我禁用了许多索引以提高插入性能 我现在需要返回并重建 重新启用它们 不幸的是 我不确定我禁用了哪些索引 有没有办法可以查询以确定哪些索引被禁用并且应该重新启用 selec
  • CAS 与同步性能

    我已经有这个问题很长一段时间了 试图阅读大量资源并了解正在发生的事情 但我仍然无法很好地理解为什么事情是这样的 简而言之 我正在尝试测试如何CAS将执行 vssynchronized在有竞争和没有竞争的环境中 我已经把这个JMH test
  • “无法分析类:可能未加载或没有自动加载器?”

    我用一个 viewhelper 创建了 我的第一个 扩展 糟糕 出现错误 无法分析类 My Mlv ViewHelpers Format ReplacenewlinesViewHelper 可能未加载或没有自动加载器 使用中 有新闻 nam
  • ASP.Net 表单可以有 method=get 或 post 属性吗?

    我是 ASP NET 新手 我的问题是 带有 runat server 的 ASP net 表单可以有一个方法属性吗 例如
  • 我的 IIS7 网站的元数据库密钥在哪里?

    我正在尝试设置我的网站设置项目的自动 每晚 安装 我可以在命令行上指定一些安装时值 特别是 添加一个TARGETSITE值定义我的新部署将前往的网站 如何在 IIS7 安装中找到我的网站的元数据库密钥 例如 LM W3SVC 2135484
  • 测试 Windows Azure Web 应用程序的最大用户负载

    我正在对新兴 Web 技术进行一些研究 并创建了一个非常简单的 Azure 网站 该网站使用 Web 套接字和 mongo db 作为数据库 我已经设法让所有组件一起工作 现在必须对应用程序执行负载测试 主要标准是应用程序可以支持的最大用户
  • Babel 5 插件正在使用不受支持的 Babel 版本运行。尝试更新 babel-relay-plugin

    Doing Lynda 构建和部署全栈 React 应用程序教程 并卡在某个点上 出现以下错误 src index js Error BABEL Users kukodajanos Workspace ticket src index js
  • QueryOver 上的 GroupBy SqlFunction

    我有一个包含所有不同帐户名称前缀 a z 的列表 我使用这些前缀获取的 var accounts this SessionManager GetActiveSession QueryOver