当前位置: 首页 > ai >正文

C#对集合进行分组IGroupingout TKey, out TElement>

C#Linq中可以使用分组方法GroupBy()对集合进行分组,返回一个分组集合对象IEnumerable<IGrouping<TKey, TSource>>

GroupBy()扩展方法

        //// 摘要://     根据指定的键选择器函数对序列的元素进行分组。//// 参数://   source://     System.Collections.Generic.IEnumerable`1 其元素进行分组。////   keySelector://     用于提取每个元素的键的函数。//// 类型参数://   TSource://     中的元素的类型 source。////   TKey://     返回的键的类型 keySelector。//// 返回结果://     IEnumerable<IGrouping<TKey, TSource>> 在 C# 或 IEnumerable(Of IGrouping(Of TKey,//     TSource)) 中 Visual Basic 其中每个 System.Linq.IGrouping`2 对象包含一系列对象和一个密钥。//// 异常://   T:System.ArgumentNullException://     source 或 keySelector 为 null。public static IEnumerable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector);

分组接口IGrouping<out TKey, out TElement>

using System.Collections;
using System.Collections.Generic;namespace System.Linq
{//// 摘要://     表示具有公共键的对象的集合。//// 类型参数://   TKey://     键的类型 System.Linq.IGrouping`2。////   TElement://     中的值的类型 System.Linq.IGrouping`2。public interface IGrouping<out TKey, out TElement> : IEnumerable<TElement>, IEnumerable{//// 摘要://     获取的键 System.Linq.IGrouping`2。//// 返回结果://     键 System.Linq.IGrouping`2。TKey Key { get; }}
}

示例程序:

控制台应用程序,这里自定义类CustomType使用元组来替代

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace GroupingLinqDemo
{class Program{static void Main(string[] args){List<Tuple<int, int, string>> tuples = new List<Tuple<int, int, string>>();tuples.Add(Tuple.Create(0, 0, "百里屠苏"));tuples.Add(Tuple.Create(0, 1, "风晴雪"));tuples.Add(Tuple.Create(0, 2, "方兰生"));tuples.Add(Tuple.Create(1, 0, "乐无异"));tuples.Add(Tuple.Create(1, 1, "闻人羽"));tuples.Add(Tuple.Create(2, 0, "北洛"));tuples.Add(Tuple.Create(2, 1, "云无月"));tuples.Add(Tuple.Create(2, 2, "岑缨"));tuples.Add(Tuple.Create(2, 3, "巫炤"));List<IGrouping<int, Tuple<int, int, string>>> groupingList = tuples.GroupBy(x => x.Item1).ToList();for (int i = 0; i < groupingList.Count; i++){List<string> dataList = new List<string>();foreach (Tuple<int, int, string> item in groupingList[i]){dataList.Add(item.ToString());}Console.WriteLine($"古剑奇谭{groupingList[i].Key + 1}:");Console.WriteLine($"\x20\x20\x20\x20【{string.Join(";", dataList)}】");}Console.ReadLine();}}
}

运行如图:

http://www.xdnf.cn/news/8043.html

相关文章:

  • 01. Qt介绍及Qt开发环境搭建(2025.05最新官网下载方式)
  • C++初阶-list的使用2
  • AI编程: OpenAI Codex vs Google Jules vs GitHub Copilot++
  • 5G 核心网切换机制全解析:XN、N2 与移动性注册对比
  • 初步尝试AI应用开发平台——Dify的本地部署和应用开发
  • 精益数据分析(77/126):问题-解决方案画布——创业团队的周度聚焦与迭代利器
  • GuzzleHttp和DomCrawler的具体用途?
  • HJ33 整数与IP地址间的转换【牛客网】
  • Flutter生物识别认证之Flutter指纹认证Flutter人脸认证
  • 养生指南:五维守护身心健康
  • HTML应用指南:利用POST请求获取全国中通快递服务网点位置信息
  • 【大模型面试每日一题】Day 26:从伦理角度,大模型可能存在哪些潜在风险?技术上如何实现内容安全控制(如RLHF、红队测试)?
  • JVM 高质量面试题
  • 利用GeoTools实现导出MySQL地理数据表为shp格式
  • Spring Task
  • 中科方德鸳鸯火锅平台使用教程:轻松运行Windows应用!
  • 网页 CSS美化(详解)
  • 养生新策:五维开启健康生活
  • 远程访问软件如何开启? 怎样让外网访问本地数据库服务?
  • C语言if-else分支结构中的类似短路现象
  • 蓝牙BLE协议之——PHY层
  • 力扣-长度最小的子数组
  • vscode包含工程文件路径
  • uni-app(3):互相引用
  • GEE数据下载问题记录
  • 第十节第六部分:常见API:DateTimeFormatter、Period、Duration
  • 数据仓库工具箱第三版——读书笔记(未完)
  • IO原理与高性能网络编程深度剖析
  • Java 大视界 -- 基于 Java 的大数据分布式存储在视频会议系统海量视频数据存储与回放中的应用(263)
  • 【Java】—— 常见的排序算法