动态 LINQ - 与 GROUP BY / SELECT 语法作斗争

2024-05-22

我有一组重复的数据,我正在从多个 SQL 表(说来话长,但尽管具有相同的数据,但它们都有不同的名称)中检索到 .NET DataTable 中:-

Point_Date  ->  Point_Value0  ->  Point_Value1  ->  Point_Value2  ->  Point_ValueX  
24/11/2014 16:18:07  ->  15.1  ->  NULL  ->  NULL  
24/11/2014 16:19:07  ->  15.2  ->  NULL  ->  NULL  
24/11/2014 16:20:07  ->  15.3  ->  NULL  ->  NULL  
24/11/2014 16:18:07  ->  NULL  ->  16.1  ->  NULL  
24/11/2014 16:19:07  ->  NULL  ->  16.2  ->  NULL  
24/11/2014 16:20:07  ->  NULL  ->  16.3  ->  NULL  
24/11/2014 16:18:07  ->  NULL  ->  NULL  ->  17.1  
24/11/2014 16:19:07  ->  NULL  ->  NULL  ->  17.2  
24/11/2014 16:20:07  ->  NULL  ->  NULL  ->  17.3

我想使用 LINQ 对日期/时间字段上的数据进行分组,以便最终得到如下记录:-

2014 年 11 月 24 日 16:18:07 -> 15.1 -> 16.1 -> 17.1

我的问题是我不知道会有多少组数据(示例中有三组,但可以是任意数量),因此我需要使用动态 LINQ。

我可以对固定数量的字段进行 LINQ 查询:-

var dtReport = (from row in dtPoints.AsEnumerable()
                group row by row.Field<DateTime>("Point_Date")
                        into t
                        select new
                        {
                        TempDate = t.Key,
                        Value1 = (double?) t.Sum(r => r.Field<double?>("Point_Value0") ?? 0),
                        Value2 = (double?)t.Sum(r => r.Field<double?>("Point_Value1") ?? 0),
                        Value3 = (double?)t.Sum(r => r.Field<double?>("Point_Value2") ?? 0)
                        });

但我在使用 System.Linq.Dynamic 使其动态化时遇到了真正的困难,以下给了我一个错误:-

        var myRpt2 = dtPoints.AsEnumerable()
            .AsQueryable()
            .GroupBy("new ( it[\"Point_Date\"] as GrpByCol1)", "it")
            .Select("new (it.key as TempDate, it.sum(\"Point_Value0\") as SumValue)");
  • 错误是:-

System.Linq.Dynamic.ParseException {“不存在适用的聚合方法‘sum’”}

我只是不知道如何在完成 GroupBy 后引用“Point_Value”字段 - 根据数据集的数量,将会有多个“sum(Point_ValueX)”字段,但我什至无法得到它目前适用于单个领域!

非常感谢,

David.


我认为你不能那样做。动态 linq 似乎不具备解析包含索引器的表达式的能力。

不过,您可以结合使用动态 LINQ 和常规 LINQ:

var myRpt2 = (
        dtPoints.AsEnumerable()
        .AsQueryable()
        .GroupBy("new ( it[\"Point_Date\"] as GrpByCol1)", "it")
        as IEnumerable<IGrouping<DynamicClass,DataRow>>
    )
    .Select (r => new { ((dynamic)r.Key).GrpByCol1, 
                        Sum = r.Sum(x => x.Field<decimal>("Point_Value0"))});

主要的转折是演员阵容GroupBy结果到IEnumerable<IGrouping<DynamicClass,DataRow>>.

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

动态 LINQ - 与 GROUP BY / SELECT 语法作斗争 的相关文章

  • 未提供参数时如何指定 C# System.Commandline 行为?

    在我的控制台应用程序中 当未提供控制台参数时 将执行我指定列表 在本例中为参数 3 的任何处理程序 调用该处理程序时 布尔参数设置为 false 但对我来说 根本不调用它更有意义 如何防止这种情况发生并显示帮助文本 using System
  • 如何在 .NET Framework 2.0 中模拟“Func<(Of <(TResult>)>) 委托”?

    我尝试使用这个类代码项目文章 http www codeproject com KB threads AsyncVar aspx在 VB NET 和 NET Framework 2 0 中 除了这一行之外 所有内容似乎都可以编译Privat
  • 确保 StreamReader 不会挂起等待数据

    下面的代码读取从 tcp 客户端流读取的所有内容 并且在下一次迭代中它将仅位于 Read 上 我假设正在等待数据 我如何确保它不会在没有任何内容可供读取时返回 我是否必须设置低超时 并在失败时响应异常 或者有更好的办法吗 TcpClient
  • 计算 Richtextbox 中所有单词的最有效方法是什么?

    我正在编写一个文本编辑器 需要提供实时字数统计 现在我正在使用这个扩展方法 public static int WordCount this string s s s TrimEnd if String IsNullOrEmpty s re
  • 提交后禁用按钮

    当用户提交付款表单并且发布表单的代码导致 Firefox 中出现重复发布时 我试图禁用按钮 去掉代码就不会出现这个问题 在firefox以外的任何浏览器中也不会出现这个问题 知道如何防止双重帖子吗 System Text StringBui
  • 在 DataView 的 RowFilter 中选择 DISTINCT

    我试图根据与另一个表的关系缩小 DataView 中的行范围 我使用的 RowFilter 如下 dv new DataView myDS myTable id IN SELECT DISTINCT parentID FROM myOthe
  • 复制 std::function 的成本有多高?

    While std function是可移动的 但在某些情况下不可能或不方便 复制它会受到重大处罚吗 它是否可能取决于捕获变量的大小 如果它是使用 lambda 表达式创建的 它依赖于实现吗 std function通常被实现为值语义 小缓
  • 在 LINQ 中按 Id 连接多表和分组

    我想按categoryId显示列表产品的名称组 这是我的代码 我想要我的视图显示结果 Desktop PC HP Red PC Dell Yellow PC Asus Red SmartPhone Lumia 720 Blue 我的组模型
  • 错误:表达式不产生值

    我尝试将以下 C 代码转换为 VB NET 但在编译代码时出现 表达式不产生值 错误 C Code return Fluently Configure Mappings m gt m FluentMappings AddFromAssemb
  • 使用 LINQ2SQL 在 ASP.NET MVC 中的各种模型存储库之间共享数据上下文

    我的应用程序中有 2 个存储库 每个存储库都有自己的数据上下文对象 最终结果是我尝试将从一个存储库检索到的对象附加到从另一个存储库检索到的对象 这会导致异常 Use 构造函数注入将 DataContext 注入每个存储库 public cl
  • 单个对象的 Monogame XNA 变换矩阵?

    我读过一些解释 XNA Monogame 变换矩阵的教程 问题是这些矩阵应用于 SpriteBatch Begin matrix 这意味着所有 Draw 代码都将被转换 如何将变换矩阵应用于单个可绘制对象 就我而言 我想转换滚动背景 使其自
  • 如何创建包含 IPv4 地址的文本框? [复制]

    这个问题在这里已经有答案了 如何制作一个这样的文本框 我想所有的用户都见过这个并且知道它的功能 您可以使用带有 Mask 的 MaskedTestBox000 000 000 000 欲了解更多信息 请参阅文档 http msdn micr
  • 获取两个工作日之间的天数差异

    这听起来很简单 但我不明白其中的意义 那么获取两次之间的天数的最简单方法是什么DayOfWeeks当第一个是起点时 如果下一个工作日较早 则应考虑在下周 The DayOfWeek 枚举 http 20 20 5B1 5D 3a 20htt
  • 如何使用 LINQ2SQL 连接两个不同上下文的表?

    我的应用程序中有 2 个数据上下文 不同的数据库 并且需要能够通过上下文 B 中的表的右连接来查询上下文 A 中的表 我该如何在 LINQ2SQL 中执行此操作 Why 我们正在使用 SaaS 产品来跟踪我们的时间 项目等 并希望向该产品发
  • 由 IHttpClientFactory 注入时模拟 HttpClient 处理程序

    我创建了一个自定义库 它会自动为依赖于特定服务的 Polly 策略设置HttpClient 这是使用以下方法完成的IServiceCollection扩展方法和类型化客户端方法 一个简化的例子 public static IHttpClie
  • 从 Linux 内核模块中调用用户空间函数

    我正在编写一个简单的 Linux 字符设备驱动程序 以通过 I O 端口将数据输出到硬件 我有一个执行浮点运算的函数来计算硬件的正确输出 不幸的是 这意味着我需要将此函数保留在用户空间中 因为 Linux 内核不能很好地处理浮点运算 这是设
  • 如何在 Xaml 文本中添加电子邮件链接?

    我在 Windows Phone 8 应用程序中有一些大文本 我希望其中有电子邮件链接 例如 mailto 功能 这是代码的一部分
  • C#:帮助理解 UML 类图中的 <>

    我目前正在做一个项目 我们必须从 UML 图编写代码 我了解 UML 类图的剖析 但我无法理解什么 lt
  • 为什么 std::strstream 被弃用?

    我最近发现std strstream已被弃用 取而代之的是std stringstream 我已经有一段时间没有使用它了 但它做了我当时需要做的事情 所以很惊讶听到它的弃用 我的问题是为什么做出这个决定 有什么好处std stringstr
  • 如何从 ODBC 连接获取可用表的列表?

    在 Excel 中 我可以转到 数据 gt 导入外部数据 gt 导入数据 然后选择要使用的数据源 然后在提供登录信息后 它会给我一个表格列表 我想知道如何使用 C 以编程方式获取该列表 您正在查询什么类型的数据源 SQL 服务器 使用权 看

随机推荐

  • HashMap 的奇怪序列化行为

    考虑以下三个类 实体变压器包含一个关联的地图Entity用字符串 Entity是一个包含 ID 的对象 由 equals hashcode 使用 并且包含对实体变压器 注意循环依赖 一些包装器包含一个实体变压器 并维护一个 Map 关联En
  • 安装 OS X Mavericks 后使用 mkvirtualenv 时出现问题

    我最近安装了 OS X Mavericks 我可以访问之前创建的虚拟环境 但在创建新虚拟环境时遇到问题 Christophers MacBook Pro 2 christopherspears mkvirtualenv bottle tod
  • javascript + jquery + setinterval + 动画

    我在 setInterval 和 jquery animate 方面遇到问题 这是我的代码 function slides1 table agah1 animate left first1 slow table agah2 animate
  • 快速重写函数错误

    我有一个结构 struct ErrorResultType ErrorType var description String var code Int 和一个协议 protocol XProtocol func dealError erro
  • <表值函数> 不是可识别的内置函数名称

    我收到此错误 消息 195 第 15 级 状态 10 第 1 行 fnParseName 不是可识别的内置函数名称 对于这个查询 SELECT fnParseName DOCTORFIRSTNAME DOCTORLASTNAME FROM
  • Xcode 中的目标、可执行文件和产品之间有什么区别

    在 Xcode 的 组和文件 面板下 目标 可执行文件和产品之间有什么区别 Target 定义如何构建产品 目标将构建产品所需的文件和指令组织成一系列可以采取的构建操作 Product 建立目标的结果 MyAppName app 换句话说
  • 机器人对话中未显示“反馈”文本

    我的表单流对话框包含一个应用了自定义验证的字段 var form builder Field new FieldReflector
  • html 可嵌入 flash wav 播放器

    我需要一个可在 IE FF 和 Chrome 中播放 wav 文件的嵌入式音频播放器 目前无法转换为 mp3 或任何其他格式 该播放器应该非常简单 只有一个播放 暂停按钮 也许还有一个时间轴栏 用户可以单击该时间轴栏来转到音频的特定部分 还
  • 使用 jQuery 在页面之间滑动

    我有一个 4 页的网站 我想用幻灯片效果在 4 页之间进行转换 我不想使用 ID 来执行此操作 我想按按钮或链接滑动到下一页 我知道这可以使用 jQuery 来完成 并且我见过这样做的网站 请帮忙 预先感谢所有建议 批评和意见 查看本教程和
  • JavaScript 函数默认参数[重复]

    这个问题在这里已经有答案了 const add a 1 b 1 c 1 gt a b c add 4 2 抛出未捕获的语法错误 意外的标记 如何调用该函数 使 b 默认为值 1 就拿undefined https developer moz
  • javascript ImageData 类型数组读取整个像素?

    所以有很多关于如何的例子writeImageData 对象的 Uint32Array 视图中的整个像素 但是是否可以在不将计数器增加 4 倍的情况下读取整个像素呢 从hacks mozilla org https hacks mozilla
  • 显式模板函数和方法专业化

    我一直在寻找一个明确的答案 我只是从网上捕捉到一些零碎的东西 我有一个函数 它需要根据类型变量采取不同的行为 该函数不带参数 因此重载不起作用 从而导致模板专门化 例如 Calls to this function would work l
  • KafkaConsumer.commitAsync() 行为的偏移量比以前更低

    kafka 将如何处理调用 KafkaConsumer commitAsync Map
  • 卡桑德拉主键。整数与 varchar 的性能影响

    在Cassandra中 如果主键是varchar而不是int或bigint 是否会有性能损失 我有 id 作为主键 我不会对此做任何数学运算 我使用 id 只是为了插入 检索比较 我想将其更改为字符串以满足我的要求之一 性能会下降吗 不会有
  • JavaFX ScrollPane 样式

    我正在尝试在 JavaFX 中创建一个黑白 ScrollPane 我已经创建了一个 CSS 文件 它工作得很好 除了这个小方块 无论我尝试什么 我都无法将其变黑 这是我的 CSS 文件 scroll pane fx background c
  • 无法在 Eclipse 中运行 genymotion 插件

    我收到错误 异常 VBoxManage java io IOException 无法运行程序 C Program Files Genymobile reg CreateProcess error 2 系统找不到指定的文件 当我尝试运行 ge
  • 使用 boost::asio::async_read 实现超时,无需在 io_service 上调用运行

    我正在尝试从超时的输入源 在本例中为标准输入 中读取数据 由于现有应用程序的设计必须适合 因此无法在我的 io service 上调用 run 到目前为止 这是我的尝试 include
  • 无法覆盖 save_model django admin?

    我不明白我做错了什么 我希望用户只添加公告模型的标题和描述 其余部分应自动填充 这是我的模型 class Annoucement models Model username models ForeignKey User on delete
  • Python 去掉字节 b' '

    import save string with open image jpg rb as f byte f read 1 while byte b byte f read 1 print byte 我得到的字节如下 b x00 我该如何摆脱
  • 动态 LINQ - 与 GROUP BY / SELECT 语法作斗争

    我有一组重复的数据 我正在从多个 SQL 表 说来话长 但尽管具有相同的数据 但它们都有不同的名称 中检索到 NET DataTable 中 Point Date gt Point Value0 gt Point Value1 gt Poi