Linq:如何将行转换为具有计数的列(交叉表数据)?

2023-12-04

我认为我需要一种方法来使用 C# 和 Linq 执行具有不确定数量的列的数据透视表或交叉表。不过,我将添加一些开始细节,看看它会走向何方。

想象一个有两个字段的表:

string EventName;
Datetime WhenItHappend;

我们想要生成一个如下例所示的报告,其中我们按 EventName 进行分组,然后使用一系列列来计算某些日期和时间范围计数。困难显然在于列数的变化。

  Sport   Jan 2010Jan 2009Feb 2010Feb 2009
Basketball    26      18      23      16  
Hockey        28      19      25      18  
Swimming      52      45      48      43  

客户可以为报告创建任意数量的命名事件计数器。功能始终相同:“名称”、“开始”、“结束”。

有什么方法可以将其组装为 C# 中的单个 linq IQueryable 结果吗?

就 SQL 而言,我尝试创建一个日期范围表 {TimeFrameName, begin, end} 并将其连接到上面的表,其中 begin


您有一个类/SQL 行

class Thing
{
    public string EventName;
    public DateTime WhenItHappend;
}

并且您想按 EventName 和 WhenItHappened.Month 进行分组

// make a collection and add some Things to it
var list = new List<Thing>();
list.Add(new Thing(){ .... });
// etc

var groups = list.GroupBy(t => new { t.WhenItHappend.Month, t.EventName } );

现在您基本上拥有了一个二维集合数组。您可以对 Month / EventName 进行迭代,以获取每个集合中的项目计数,这就是您想要在表中显示的内容。

foreach (var row in groups.GroupBy(g => g.Key.EventName))
{
    foreach (var month in row.GroupBy(g => g.Key.Month))
    {
        var value = month.Count();
    }
}

GroupBy 运算符返回组的集合,其中每个组包含一个 Key 以及与指定 Key 匹配的原始列表的子集。如果指定二维 Key,则可以将结果视为二维集合数组。

GroupBy是一个非常强大的运算符!

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

Linq:如何将行转换为具有计数的列(交叉表数据)? 的相关文章

  • 如何使用C从http下载文件?

    最近几天我试图弄清楚如何从 URL 下载文件 这是我对套接字的第一个挑战 我用它来了解协议 所以我想在没有 cURL 库的情况下只用 C 语言来完成它 我搜索了很多 现在我可以打印页面的源代码 但我认为这与文件不同 我不必只将接收到的数据从
  • 错误:表达式不可赋值三元运算符

    我有以下代码 MPLABX XC8 编译器给出此错误 错误 表达式不可分配 U1ERRIRbits RXFOIF uart1 oerr 1 uart1 oerr 0 这是相关代码部分 typedef union struct bool fe
  • copy_from_user() 错误:目标大小太小

    我正在为内核模块编写 ioctl 处理程序 我想从用户空间复制数据 当我编译禁用优化的代码时 O0 gflags 编译器返回以下错误 include linux thread info h 136 17 error call to bad
  • 非模板函数中的尾随返回类型[重复]

    这个问题在这里已经有答案了 我见过有人使用以下语法来实现函数 auto get next gt int 代替 int get next 我理解两者 并且我知道尾随返回类型语法对于使用 decltype 的模板代码很有用 就我个人而言 我会避
  • SOAP Web 服务:多台服务器,一个接口

    我有一个场景 需要任意数量的服务器来提供相同的 SOAP Web 服务 我想生成一组代理类 并能够为它们提供一个位置 以便在运行时将它们指向不同的服务器 不幸的是 看起来好像wsdl port节点 子节点wsdl service 要求对特定
  • 如何使用T4从一个模板同时生成两个文件?

    我遇到的情况是 我需要生成两个 CSharp 代码文件 它们的代码几乎相同 但方法的输入和输出类型的命名空间不同 事实上 每个文件都针对特定国家 地区 并且类型来自特定国家 地区的 WSDL 我正在围绕服务编写一些包装器 逻辑完全相同 但从
  • 如何在 C++ 中为指针“this”赋值

    在函数中 如何分配this一个新的价值 您可以分配对象this点于 this XY 但你不能分配直接值this this XY Error Expression is not assignable
  • Visual Studio 2013 调试器显示 std::string 的奇怪值

    我有一个大型的 cmake 生成的解决方案 其中包含许多项目 由于某种原因 我无法查看字符串的内容 因为根据调试器 Bx Buf含有一些垃圾 text c str 正确返回 Hello 该问题不仅仅发生在本地字符串上 返回的函数std st
  • Windows Phone 7 - ScrollViewer 值已更改

    我一直在寻找解决方案 但无法找到正确的解决方案 我的网格宽度为 960 并且有ScrollViewer在里面 现在我想知道滚动时滚动的值 水平偏移 我找到的所有解决方案都是针对 wpf silverlight 的 它对我不起作用 Edit
  • 如何在 C 中链接目标文件?失败并显示“架构 x86_64 的未定义符号”

    因此 我尝试在我的文件 file2 c 中使用另一个 C file1 c 文件中定义的函数 为了做到这一点 我包含了 file1 file1 h 的标头 但是 每当我尝试使用 gcc 编译文件时 我都会收到以下错误 Undefined sy
  • 如何在Windows窗体中打开进程

    我想在我的 Windows 窗体应用程序中打开进程 例如 我希望当用户按下 Windows 窗体容器之一中的按钮时 mstsc exe 将打开 如果他按下按钮 它将在另一个容器上打开 IE DllImport user32 dll SetL
  • 为什么这个位图图像在加载后会改变大小?

    快速提问 我有这个1000 1000位图图像 我使用这个例程来加载它 private BitmapSource initialBitmap new BitmapImage new Uri C Users Desktop Original b
  • C++网络序列化[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一种将 C 数据包序列化为网络流的解决方案 我在这里看到很多帖子提到人们 ACE 谷歌协议缓
  • Clang 5.0 上的 vsprintf 和 vsnprintf [-Wformat-nonliteral] 警告

    我有这段代码 static void err doit int errnoflag int level const char fmt va list ap int errno save unsigned long n char buf MA
  • 具有多个父项的 Qt 树模型

    我想构建一棵树 其中一个元素可以引用另一个元素 我想要构建的树是 像这样的东西 A B C D E F P this is a pointer to C D first child of C E second child of C I fo
  • 在一个解决方案中调用不同项目的方法

    1 个解决方案中有 3 个项目 我对第一个项目中的主文件进行的主要操作 但是我需要调用第三个项目中的方法并使用类 例如 第三个项目有 public DataClasses1DataContext base global WindowsFor
  • 在 Visual Studio 2012 Express 中设置 C++ 调试环境

    我需要调试的应用程序需要设置环境变量 这在 Visual Studio 2012 中似乎非常复杂 我想做类似的事情 set path c foo c bar c windows c program files application set
  • g++ / gcc 是否支持 C++20 新的atomic_flag 功能?

    根据参考参数 https en cppreference com w cpp atomic atomic flag c 20 有丰富的 对我来说有用的 支持atomic flag运营 然而 目前尚不清楚 gcc 是否支持这些功能 它们在任何
  • 如何防止 Lotus Notes 用户转发或复制通过 System.Net.Mail 发送的邮件?

    我想使用 SMTP 客户端 uiing microsft net 以 C 作为编程语言发送电子邮件 但是对于通过SMTP客户端发送的电子邮件 我们是否可以添加 禁止转发 或 禁止复制 等安全功能 我不希望电子邮件的收件人转发或复制电子邮件的
  • 如何将模型绑定到动态创建的类 nancyfx

    首先感谢任何愿意查看我的问题的人 我对 Nancyfx 还很陌生 在尝试将 JSON 有效负载绑定到动态创建的类时遇到问题 我按照这篇文章中的代码动态创建了该类 在C 中动态创建一个类 https stackoverflow com que

随机推荐

  • 将 JPanel 添加到 JScrollPane

    我正在尝试显示多个较小的JPanel on a JScrollPane 为了实现这一目标 我目前将它们添加到另一个JPanel并将此面板设置为scrollPane的ViewportView 有没有办法将面板直接添加到滚动窗格 不起作用的是
  • 如何在 Windows 中将套接字设置为阻塞模式?

    我正在做一些相当简单的跨平台 TCP 套接字编程 不幸的是 我发现在 Windows 上编译时 我的套接字默认是非阻塞的 而在 OS X 上它们默认是阻塞的 如何在 Windows 上强制套接字进入阻塞模式 它们通常默认为非阻塞模式还是有什
  • php数组唯一类型检查

    我在用array unique删除数组中的重复值 但是 问题是array unique检查重复项时不考虑数据类型 例如 a 1 true null false u array unique a var dump u Outputs arra
  • 按进程获取电池使用情况

    我有一个代码 在 C 中 用于管理在我的计算机中启动的所有进程 我用性能计数器用于查找在一个特定进程中链接的所有值的类 例如 此代码检索了 Firefox 的处理器时间使用情况 PerformanceCounter processorTim
  • 如何使用 BeautifulSoup 删除嵌套标签中的内容?

    如何删除嵌套标签中的内容BeautifulSoup 这些帖子显示了相反的情况来检索嵌套标签中的内容 如何使用 BeautifulSoup 获取嵌套标签的内容 and BeautifulSoup 如何从包含一些嵌套 的 列表中提取所有 我努力
  • 合并字典而不覆盖值

    这似乎是一个简单的任务 我正在尝试合并两个字典而不覆盖值但附加 a 1 1 1 2 2 2 3 3 3 4 4 b 3 5 5 4 6 6 元组数量 a 4 元组数量 b 2 这就是为什么我单独列出这些选项 因为它们会覆盖 all dict
  • 当隔离级别为 READ_UNCOMMITTED 时,无法看到正在运行的事务插入的行

    我有将行插入表的应用程序A同时 每个应用程序以批处理模式插入行 使用 JDBC 准备好的语句 每批使用一个事务 以避免在每次插入后重建索引 INSERT 每个批次中存在的行是完全独立的 事务仅用于优化 每个插入的行都会自动设置其主键 AUT
  • 以图像为背景的热图

    我正在尝试使用 R 制作热图 我正在尝试使用 ggplot2 我的实际数据框要大得多 但在这里我只包含一小部分 x lt c 502 9 512 1 716 6 759 7 776 1 776 5 736 1 271 3 304 7 279
  • 在NDK中使用资源文件

    我正在创建一个 NDK 库 它需要包含和访问二进制数据文件 dat 扩展名 我无法让已编译的库查看此文件 为了让事情变得更加困难 我在库包中执行此操作 我认为如果在我的 Android mk 文件期间 将此 dat 文件复制到我的应用程序的
  • 如何在ASP.NET中获取提示值?

    我想要做的是 当用户在提示框中输入文本并按下 确定 按钮时 提示框会将值发送回string prmt 如果他们取消了提示 则不会执行任何操作 Codes string prmt if ren gt 1 ClientScript Regist
  • 静态方法的目的是什么?我如何知道何时使用? [复制]

    这个问题在这里已经有答案了 我使用以下代码在 python 中遇到了未绑定方法错误 import random class Sample object def drawSample samplesize List sample random
  • 让 Rails 接受欧洲日期格式 (dd/mm/yyyy)

    我希望我的 Rails 应用程序接受格式为 dd mm yyyy 的日期字段的日期 在我的模型中 我尝试将日期转换为美国标准 我认为 Rails 将调用它的 Date parse 方法是期望的 before validation check
  • 为列表视图设置背景

    我有四个选项卡 其中包含四个列表视图 我想为每个列表视图设置背景 但每当我尝试添加背景时 它都会将图像放置在列表视图的每个单元格中 而不是列表后面
  • Swift Json 如何在没有顶级密钥和自动生成的密钥的情况下进行解码

    这对我没有帮助 Swift 4 解析 1 n 数量的 json 数字键 情况有所不同 我有这个 JSON 稍微简化了一点 1 name Tea room description A room for tea 2 name Playgroun
  • 如何在root手机上获取NFCEE_ADMIN权限?

    NFCEE ADMIN 权限是签名级别 但是 是否有可能在已root的手机上 作弊 以获得此权限 也许使用类似的技术ClockSync 的工作方式 我正在尝试使用反射技术来访问 NFCExtras mAdapter NfcAdapter g
  • 如何在Python 3中生成0到无穷大之间的N个随机数

    如何在 python 3 中生成 n 个随机数 n为待 定变量 最好是自然数 整数 gt 0 我找到的所有答案都采用一定范围内的随机整数 但是我不想从一定范围内生成数字 除非范围是 0 到无穷大 用维特根斯坦的话来说 机器的限制就是语言的限
  • Woocommerce (3.0) 产品类型不会保存

    最近将 Woocommerce 更新到 3 0 之后我在保存我创建的自定义产品类型时遇到问题 这就是代码现在的样子 function register xxxxxx product type class WC Product package
  • 如何在任务栏上制作Windows 7加载栏

    I want to create a windows 7 loading bar on the taskbar something like this 我已经有一个 jframe 框架 可以在其中加载游戏 我想让loadingbar显示下载
  • Vectorise 查找最接近的日期函数

    我想传递一个日期向量 并从第二个 部分匹配 日期向量返回最接近的日期 以下函数满足我对单个日期的要求 但是我不知道如何将其推广到以下情况 searchDate是日期向量 closestDate lt function searchDate
  • Linq:如何将行转换为具有计数的列(交叉表数据)?

    我认为我需要一种方法来使用 C 和 Linq 执行具有不确定数量的列的数据透视表或交叉表 不过 我将添加一些开始细节 看看它会走向何方 想象一个有两个字段的表 string EventName Datetime WhenItHappend