c# - Linq to sql 按多条记录进行分组

标签 c# linq-to-sql

有没有办法创建 linq to sql 查询以按 Take 参数进行分组?

例如,如果我有一个包含 20 条记录且唯一 ID 值从 1 到 20 的表,我希望获得一组由 5 条记录分组的记录:

Group 1: 1,2,3,4,5
Group 2: 6,7,8,9,10
....

我可以想到两种方法来做到这一点

通过进行 5 次查询: 第一个查询计算总记录数,接下来的 4 个查询将是选择查询,其中我跳过 5 个并取 5 个。

通过进行一次查询,使用内部索引循环结果并创建包含 5 组的对象

有没有更优雅的方法来使用 linq to sql 来做到这一点?

最佳答案

你的第二个想法正是我会做的。只需从数据库获取所有内容并在 .NET 端循环即可。可能有一些方法可以使用 Aggregate 以更像 LINQ 的方式来完成此操作,但我确信它们会更难阅读。如果您以惰性方式执行此操作(使用yield 来实现枚举器),您仍然只会循环序列一次,因此不会损失性能。

关于c# - Linq to sql 按多条记录进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8153799/

相关文章:

c# - 如何将 .NET 库的源代码获取到 VS

c# - 获取 Windows 机器上的用户列表?

c# - 从自引用数据库表填充递归数据结构

c# - 是否可以用 C# 模拟 ms-access 的功能?

c# - linq to sql 中的奇怪行为在不过滤的情况下返回所有行

C# 问题 : How do I save changes made in a DataGridView back to the DataTable used?

c# - 如何显示服务器端验证错误消息?

c# - 从 onchange 触发 .click() 时 IE9 出现 "SCRIPT5 Access is denied"错误

c# - 将 DateTime 条目列表转换为自定义摘要列表

c# - 在 Visual Studio 调试器中查看 Lambda