新闻中心

.NET如何使用LINQ对集合进行分组和排序

2025-11-16
浏览次数:
返回列表
答案:在.NET中,使用LINQ的GroupBy可按键分组数据,结合OrderBy、ThenBy可对分组及组内元素进行单级或多级排序,通过Select投影可实现结构化输出,使集合操作简洁高效。

.net如何使用linq对集合进行分组和排序

在 .NET 中,使用 LINQ(Language Integrated Query)可以非常方便地对集合进行分组和排序。通过 GroupByOrderBy / ThenBy 等方法,你可以以声明式方式处理数据,代码简洁且易读。

使用 GroupBy 进行分组

GroupBy 方法根据指定的键将集合中的元素分组,返回一个 IGrouping 的序列。

示例:按类别对产品进行分组

假设有如下 Product 类:

public class Product
{
    public string Name { get; set; }
    public string Category { get; set; }
    public decimal Price { get; set; }
}

创建一个产品列表并按 Category 分组:

var products = new List<Product>
{
    new Product { Name = "Apple", Category = "Fruit", Price = 1.2m },
    new Product { Name = "Banana", Category = "Fruit", Price = 0.8m },
    new Product { Name = "Carrot", Category = "Vegetable", Price = 0.5m },
    new Product { Name = "Broccoli", Category = "Vegetable", Price = 1.0m }
};
<p>var grouped = products.GroupBy(p => p.Category);</p>
                    <div class="aritcle_card">
                        <a class="aritcle_card_img" href="/ai/1852">
                            <img src="https://img.php.cn/upload/ai_manual/000/969/633/68b6c77ba67c5501.png" alt="Zyro AI Background Remover">
                        </a>
                        <div class="aritcle_card_info">
                            <a href="/ai/1852">Zyro AI Background Remover</a>
                            <p>Zyro推出的AI图片背景移除工具</p>
                            <div class="">
                                <img src="/static/images/card_xiazai.png" alt="Zyro AI Background Remover">
                                <span>145</span>
                            </div>
                        </div>
                        <a href="/ai/1852" class="aritcle_card_btn">
                            <span>查看详情</span>
                            <img src="/static/images/cardxiayige-3.png" alt="Zyro AI Background Remover">
                        </a>
                    </div>
                <p>foreach (var group in grouped)
{
Console.WriteLine($"Category: {group.Key}");
foreach (var product in group)
{
Console.WriteLine($"  - {product.Name}: ${product.Price}");
}
}

结合 OrderBy 对分组结果排序

你可以在分组后对组本身或组内元素进行排序。

示例:按类别分组,并按价格升序排列每组内的产品
var groupedAndSorted = products
    .GroupBy(p => p.Category)
    .Select(g => new
    {
        Category = g.Key,
        Products = g.OrderBy(p => p.Price).ToList()
    })
    .OrderBy(x => x.Category); // 按类别名称排序分组
<p>foreach (var group in groupedAndSorted)
{
Console.WriteLine($"Category: {group.Category}");
foreach (var product in group.Products)
{
Console.WriteLine($"  - {product.Name}: ${product.Price}");
}
}

多级排序与分组

你可以实现更复杂的逻辑,比如先按类别分组,再在每组内按价格降序、名称升序排列。

示例:组内多级排序
var complexSort = products
    .GroupBy(p => p.Category)
    .Select(g => new
    {
        Category = g.Key,
        Products = g
            .OrderByDescending(p => p.Price)
            .ThenBy(p => p.Name)
            .ToList()
    });
<p>// 输出结果
foreach (var group in complexSort)
{
Console.WriteLine($"Category: {group.Category}");
foreach (var product in group.Products)
{
Console.WriteLine($"  - {product.Name} (${product.Price})");
}
}

基本上就这些。LINQ 提供了强大而直观的语法来处理集合的分组与排序,合理使用 GroupBy、OrderBy、ThenBy 等方法,可以让数据操作变得清晰高效。注意在查询中保持可读性,复杂逻辑可拆分为多个步骤或封装为方法。

以上就是.NET如何使用LINQ对集合进行分组和排序的详细内容,更多请关注其它相关文章!


# 相关文章  # 安徽什么是营销推广方法  # 坪山seo联系方式  # 建设网站之前需要做什么  # 哈尔滨网站建设免费咨询  # 重庆seo行业服务  # 开展营销宣传推广  # 滁州谷歌seo方案招聘  # 即墨民宿网站建设  # 惠水关键词排名  # 智能网络营销推广价格表  # 解决问题  # 中文网  # .net  # 多个  # 每组  # 并按  # 数据结构  # 如何使用  # 升序  # 你可以  # 排列  # apple  # app  # go  # linq 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 《刺客信条4:黑旗》重制版新细节曝光:无缝加载 地图更细致!  Safari怎么安装扩展程序 浏览器插件安装与管理方法【详解】  Golang并发任务中错误如何聚合_Golang goroutine error收集方式  Yandex搜索引擎官方地址 俄罗斯网络世界的主要入口  J*aScript设计模式实践_j*ascript代码优化  C++如何操作大型数据集_使用C++流式处理(Streaming)技术避免一次性加载大文件  Win11文件资源管理器卡顿怎么修 Win11重置资源管理器进程优化响应速度【修复方法】  高德地图沿途添加点失败如何解决 高德多点规划方法  PHP中获取MongoDB服务器运行时间(Uptime)的专业指南  蛙漫正版漫画平台入口_蛙漫免费阅读全站漫画资源  绝地鸭卫平a核爆刀流玩法攻略  红果短剧网页版官网入口 官方最新网址发布  Win11蓝牙耳机断连怎么解决 Win11蓝牙设置重新配对与驱动更新【技巧】  J*a编写用户注册与登录功能_掌握字符串与验证逻辑  菜鸟取件码是什么怎么查 最全查询渠道汇总  提升Kafka消费者健壮性:会话超时处理与消息处理语义  解决Flask中Quill编辑器内容提交失败及TypeError的指南  抖音未来赚钱的新趋势 2025年值得关注的变现风口分析  Excel组合图表怎么做 Excel创建柱状图与折线组合图教程【图表】  新手怎么开始学化妆 零基础化妆入门教程  Archive of Our Own官网直达 AO3最新可用地址一览  qq游戏跨平台入口_qq游戏多设备同步登录  星露谷物语官网入口 星露谷物语游戏官网入口  CSS自定义字体样式被系统字体替换怎么办_font-face方式指定font-display控制渲染策略  C++如何实现一个装饰器模式_C++设计模式之动态地给对象添加额外职责  漫蛙漫画网页端入口 漫蛙2官方正版漫画站点  wps文字怎么插入目录并自动更新_wps文字如何插入目录并自动更新方法  优化大型XML文件解析:基于Python流式处理的内存高效方案  在python-socketio事件处理器中安全访问Flask应用上下文  vivo云服务网页版登录 怎么登录vivo云服务网页版  微博网页版主页入口 微博官方网站免登录访问  实现全屏滚动与导航点:专业教程  《GTA6》开发画面疑似泄露!这次可不是AI了  Adobe PDF表单中利用J*aScript解析与格式化日期组件的教程  Fabric Mod开发:在1.19.3+版本中正确添加自定义物品并管理物品组  实现分段式页面滚动导航:CSS与J*aScript教程  python3时间如何用calendar输出?  怎样使用“本地安全策略”提升Windows安全性_Secpol.msc配置指南【高手】  神庙逃亡小游戏在线玩 神庙逃亡小游戏入口  J*a TimerTask中HashMap意外清空的深层原因与解决方案  sublime如何配置Python开发环境_将sublime打造成轻量级Python IDE  谷歌浏览器怎么给标签页静音_Chrome标签静音快捷操作  Golang如何实现状态模式管理对象状态_Golang State模式实现技巧  拼多多视频播放卡顿如何处理 拼多多视频播放优化技巧  漫蛙漫画官方首页 漫蛙2漫画在线阅读入口  离线运行Go语言之旅:本地部署与GOPATH配置指南  如何在 Excel Online 和 Google 表格中更改日期格式  Steam官网入口直达 Steam注册及登录步骤  Django表单提交验证失败后保持字段值不刷新  如何将HTML表格多行数据保存到Google Sheets 

搜索