动态 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 语法作斗争 的相关文章

随机推荐

  • 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