动态生成Linq Select

2024-01-08

我有一个数据库,用户可以在其上运行各种计算。计算在 4 个不同的列上运行,每个计算不一定使用每个列,即,calculation1 可能会变成 sql 之类

SELECT SUM(Column1) 
FROM TABLE 
WHERE Column1 is not null

计算2将是

SELECT SUM(Column2)
WHERE Column2 is null

我正在尝试通过 linq 生成此数据,并且每次都可以通过计算所有内容来获取正确的数据,例如

table.Where(x => x.Column1 != null)
     .Where(x => x.Column2 == null)
     .GroupBy(x => x.Date)
     .Select(dateGroup => new
             {
               Calculation1 = dateGroup.Sum(x => x.Column1 != null),
               Calculation2 = dateGroup.Sum(x => x.Column2 == null)
             }

问题是我的数据集非常大,因此除非用户请求,否则我不想执行计算。我研究过动态生成 Linq 查询。到目前为止我发现的只是 PredicateBuilder 和 DynamicSQL,它们似乎只对动态生成Where谓词有用,并将sql查询本身硬编码为字符串,并在必要时插入Sum(Column1)或Sum(Column2)。

如何将 Select 查询的不同部分动态添加到这样的匿名类型中?或者我应该寻找一种完全不同的方式来处理这个问题


您可以在不执行查询的情况下返回查询,这将允许您动态选择要返回的内容。

也就是说,您无法在运行时动态修改匿名类型。它们在编译时是静态类型的。但是,您可以使用不同的返回对象来允许动态属性,而无需外部库。

var query = table
    .Where(x => x.Column1 != null)
    .Where(x => x.Column2 == null)
    .GroupBy(x => x.Date);

然后,您可以使用以下任一方法动态解析查询:

  1. dynamic

    dynamic returnObject = new ExpandoObject();
    
    if (includeOne)
        returnObject.Calculation1 = groupedQuery.Select (q => q.Sum(x => x.Column1));
    
    if (includeTwo)
        returnObject.Calculation2 = groupedQuery.Select (q => q.Sum (x => x.Column2));
    
  2. 具体类型

    var returnObject = new StronglyTypedObject();
    if (includeOne)
        returnObject.Calculation1 = groupedQuery.Select (q => q.Sum(x => x.BrandId));
    
  3. Dictionary<string, int>

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

动态生成Linq Select 的相关文章

  • 列中差异的数量

    我想检索一列每行中有多少个字母的差异 例如 如果您有一个值 test 而另一行有一个值 testing 则 test 和 testing 之间的差异为 4 个字母 该列的数据值为 4 I have reflected about it an
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 随着时间的推移,添加到 List 变得非常慢

    我正在解析一个大约有 1000 行的 html 表 我从一个字符串中添加 10 个字符串 td 每行到一个list td
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • 在 Sql Server 中转换为日期时间 MM/dd/yyyy HH:mm:ss

    如何将给定的日期格式转换为MM dd yyyy HH mm ss 我尝试了下面这个但没有实现 谁能帮我 SELECT CONVERT VARCHAR 20 GETDATE 120 SQL Server 2005及以上版本支持 SELECT
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

    我所说的 5 5 正是指第五行第五列 我发现使用屏幕坐标来绘制东西非常困难 OpenGL 中的所有坐标都是相对的 通常范围从 1 0 到 1 0 为什么阻止程序员使用屏幕坐标 窗口坐标如此严重 最简单的方法可能是通过以下方式设置投影以匹配渲
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l

随机推荐

  • Selenium.click 对某些锚元素不起作用

    我正在开发的应用程序最近进行了改进 作为其中的一部分 引入了新的 JQuery 日历 我需要单击日历中的链接来选择时间和日期 但是 Selenium click 不起作用 命令被执行 但屏幕上没有任何反应 为了检查我的 XPATH CSS
  • 如何使用 pg-promise 将 jsonb[] 数据插入列

    给定一个包含 type 列的表jsonb 如何将 json 数组插入到列中 使用提供的格式化程序 array json在这种情况下不起作用 除非我错过了正确的组合或其他东西 const links title IMDB url https
  • bootstrap-typeahead.js 在 select 事件上添加监听器

    我是 Bootstrap Twitter 框架的新手 我需要使用 bootstrap typeahead js 进行自动完成 但我还需要获取用户为 typeahead 选择的值 这是我的代码
  • 对于 std::generate,传递的函数可以使用索引吗?

    问题有点难以表达 所以我将举一个例子 可以说我这样做 generate myvec begin myvec end func 我可以拥有它 以便 function 可以读取生成的索引吗 int func if index lt 2 retu
  • Gson 有类似 @JsonProperty 的方法吗?

    Jackson 有 JsonProperty name 注释 可以应用于方法 方法的返回值将分配给 JSON 中的 name 参数 我发现 Gson 有 SerializedName 注释 但不能与方法一起使用 有没有办法获得 Gson 中
  • 使用嵌入式互操作类型时发出警告

    我最近将我的 C 解决方案之一从 VS2008 更新到 VS 2010 以利用嵌入式互操作类型功能 这样我就可以停止提供目前由于与旧版 VB6 代码库交互而必须使用的互操作库 由于某种原因 我在编译解决方案时收到以下消息 类型库导入程序遇到
  • 带有 GigE 视觉相机的 OpenCV [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的
  • Google 地图 v3 自动刷新 仅标记

    我正在使用 Google 地图 V3 来显示一些图钉 我希望能够刷新标记而不影响您在地图上的位置或缩放级别 我希望标记每 x 秒更新一次 我该怎么做呢 我对 jQuery ajax 没有太多经验 我的地图的工作示例如下 http jsfid
  • Python Pillow 的缩略图方法返回 None

    我有一个小脚本 用于使用 Python 的 Pillow 库批量调整图像大小 该脚本适用于调整大小方法 但是纵横比的变化会扭曲图像 因此我尝试使用缩略图方法测试相同的脚本 我很困惑 因为从文档和其他堆栈问题看来 我可以将调整大小方法替换为缩
  • 为什么我的 UDP 客户端/服务器数据报无法进行双向通信?

    我在两个应用程序之间设置了一个简单的 UDP 客户端 服务器数据报 Android Java Client 和 Windows C Server 这是我第一次使用 Java 编程和 Android 应用程序 因此解决方案可能是显而易见的 这
  • 如何获取服务中当前登录的用户

    在 Symfony 2 8 3 0 中 使用我们精美的新安全组件 我如何获取当前记录的User 即 FOSUser 服务中的对象without注入整个容器 是否有可能在非黑客方式 PS 我们不要考虑 将其作为参数传递给服务函数 因为这是显而
  • 使用 pdfbox 解析文件内容时使用后备字体 - 会导致错误吗?

    我正在使用 Apache Tika 1 14 它使用 pdfbox 2 0 3 我用它来提取文件的文本内容 在生产模式下 当处理许多文件时 我会记录许多如下语句 WARN o a p pdmodel font PDTrueTypeFont
  • 每次击键后 Xcode 都会继续构建故事板

    我使用故事板的 Xcode 项目最近进入了一种非常奇怪的状态 Xcode 不断构建整个项目 特别是之后的故事板每次按键 我没有发现这种行为的原因 无论是在我的项目中比较所有有趣的文件 故事板和项目 还是Xcode中的设置 也许我只是找不到它
  • 如何在 Apache 服务器中部署 Web 应用程序 Aurelia?

    为了进行尝试 我使用了最新的 aurelia sculpture navigation 1 0 0 beta 1 0 1 为了在 Apache 服务器中部署 Aurelia Web 应用程序 我使用了 gulp export 命令 并将 e
  • 滚动后颤动 ListView KeepAlive

    我想要keepAlive我的小部件已经渲染在ListView 我被尝试过addAutomaticKeepAlives true提供的属性ListView class 这是我使用的示例代码 同样的问题在SliverChildBuilderDe
  • htaccess 密码保护,但不在本地主机上

    我已经建立了一个开发网站 并希望对其进行密码保护 以便只有经过验证的访问者才能查看该网站 一切都很好 我很恼火 在我的本地版本上输入我的用户名和密码 那么 在不更改本地副本和开发站点上的 htaccess 文件之间的情况下 如何使用密码保护
  • 节点获取仅返回待处理的承诺

    我正在尝试node fetch我得到的唯一结果是 Promise
  • `-rdynamic` 到底有什么作用以及什么时候需要它?

    到底是做什么的 rdynamic or export dynamic在链接器级别 做什么以及它如何与定义的符号可见性相关 fvisibility 标志或可见性pragmas and attribute s For export dynami
  • 如何从Windows应用程序内存中读取一些数据?

    我有一个应用程序 它向我显示一些数据 我需要附加到这个应用程序的进程 在内存中找到我需要的数据 实际上是一个数字 并将其保存在某个地方 该应用程序似乎没有使用标准的 Windows 控件 因此事情不会像使用 AutoIt 或类似的东西读取控
  • 动态生成Linq Select

    我有一个数据库 用户可以在其上运行各种计算 计算在 4 个不同的列上运行 每个计算不一定使用每个列 即 calculation1 可能会变成 sql 之类 SELECT SUM Column1 FROM TABLE WHERE Column