Chr☆s Kwok 的技术笔记

.NET, C#, WPF, WCF, WF, .NetCore & LINQ ... I know how it works because I know why it works ...

博客园 首页 新随笔 订阅 管理
  130 随笔 :: 0 文章 :: 30 评论 :: 30万 阅读

1、定义演示数据类型:

复制代码
public class TestData
{
public int GrpId { get; private set; }
public int Id { get; set; }
public int IdMod5 { get; private set; }
public string Name { get; set; }

public TestData(int id, string name)
{
Random _random
= new Random();
this.Id = id;
this.Name = name;
this.GrpId = this.Id % 3;
this.IdMod5 = this.Id % 6;
}
}
复制代码

 

假定已初始化了如图的数据:

2、演示分组时组内排序和组外排序方法:

复制代码
Console.WriteLine("\r\n演示组内按Name降序和组外按Key.RID升序:");
var numberGroups
= from n in testdatas
orderby n.Name descending
group n by
new { n.IdMod5, RID = n.GrpId } into g
orderby g.Key.RID
select
new { Remainder = g.Key, Numbers = g };
foreach (var g in numberGroups)
{
Console.WriteLine(
"Numbers with a remainder of {0} when divided by 5:", g.Remainder);
foreach (var n in g.Numbers)
{
Console.WriteLine(
"Id:{0} Name:{1} RID:{2} IdMod5:{3}", n.Id, n.Name, n.GrpId, n.IdMod5);
}
}
复制代码

 

运行结果见下图:

3、演示先分组,然后每组里面仅取满足条件的行组:

复制代码
Console.WriteLine("\r\n演示先分组,然后每组里面仅取Id最大的行组:");
var lets
= from a in testdatas
group a by a.GrpId into grp
let maxId
= grp.Max(a => a.Id)
from row
in grp
where row.Id == maxId
select row;

foreach (var g in lets)
{
Console.WriteLine(
"Id:{0} Name:{1} RID:{2} IdMod5:{3}", g.Id, g.Name, g.GrpId, g.IdMod5);
}
复制代码

 

运行结果如下图:

 

 演示代码

posted on   Chr☆s  阅读(5436)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示