C# LINQ:简化集合查询(基础用法)

简介: LINQ是C#中集成的查询功能,可简洁高效地查询集合、数据库等数据源。通过示例演示了过滤、排序、分组、投影和聚合操作,展现其在处理产品列表时的强大与便捷。

LINQ(Language Integrated Query)是集成在 C# 中的查询语言,可简洁地查询集合、数据库等数据源。
public class LinqDemo
{
public static void QueryList()
{
// 数据源:产品列表
List products = new List
{
new Product { Id = 1, Name = "C#教程", Price = 99.9m, Category = "图书" },
new Product { Id = 2, Name = "键盘", Price = 199.9m, Category = "数码" },
new Product { Id = 3, Name = "鼠标", Price = 89.9m, Category = "数码" },
new Product { Id = 4, Name = "Java教程", Price = 89.9m, Category = "图书" },
new Product { Id = 5, Name = "显示器", Price = 1299.9m, Category = "数码" }
};

    // 1. 查询所有数码类产品(Where)
    var digitalProducts = products.Where(p => p.Category == "数码");
    Console.WriteLine("=== 数码类产品 ===");
    foreach (var p in digitalProducts)
    {
        Console.WriteLine($"{p.Name} - {p.Price:C}");
    }

    // 2. 查询价格低于100元的产品,按价格升序排序(Where + OrderBy)
    var cheapProducts = products.Where(p => p.Price < 100).OrderBy(p => p.Price);
    Console.WriteLine("\n=== 价格低于100元的产品(升序) ===");
    foreach (var p in cheapProducts)
    {
        Console.WriteLine($"{p.Name} - {p.Price:C}");
    }

    // 3. 按分类分组(GroupBy)
    var groupedByCategory = products.GroupBy(p => p.Category);
    Console.WriteLine("\n=== 按分类分组 ===");
    foreach (var group in groupedByCategory)
    {
        Console.WriteLine($"分类:{group.Key}");
        foreach (var p in group)
        {
            Console.WriteLine($"  - {p.Name}");
        }
    }

    // 4. 投影(只取名称和价格,匿名类型)
    var productInfo = products.Select(p => new { p.Name, p.Price });
    Console.WriteLine("\n=== 产品名称和价格 ===");
    foreach (var info in productInfo)
    {
        Console.WriteLine($"{info.Name}:{info.Price:C}");
    }

    // 5. 统计(Count/Sum/Average)
    int totalCount = products.Count();
    decimal totalPrice = products.Sum(p => p.Price);
    decimal avgPrice = products.Average(p => p.Price);
    Console.WriteLine($"\n=== 统计信息 ===");
    Console.WriteLine($"产品总数:{totalCount}");
    Console.WriteLine($"总价:{totalPrice:C}");
    Console.WriteLine($"均价:{avgPrice:C}");
}

}

// 产品实体类
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
public string Category { get; set; }
}

// 调用示例
LinqDemo.QueryList();

相关文章
|
2天前
|
安全 C#
C# 泛型:实现类型安全的通用代码
泛型通过类型参数(如T)实现类型通用性,可定义不指定具体类型的类或方法,使用时再确定类型。示例中,Swap&lt;T&gt;方法可交换任意同类型变量,List&lt;T&gt;集合避免装箱拆箱,提升性能与安全。
|
2天前
|
C#
C# 字符串操作:常用方法汇总(含案例)
C# 提供丰富的字符串操作方法,如拼接、截取、替换和判断等。本文通过工具类案例演示如何高效处理字符串,提升开发效率与代码可读性。
|
2天前
|
C#
C# 文件操作:读取与写入文本文件
`File`类提供文件操作静态方法,适合快速读写;大文件推荐使用`StreamReader/StreamWriter`以降低内存占用。示例展示了文本文件的写入、追加与读取操作,支持自动创建目录,建议处理路径时注意权限并优先使用相对路径。
|
2天前
|
C#
C# 继承:复用父类功能的核心技巧
C# 中通过“:”实现继承,子类可复用并重写父类的虚方法。Student 继承 Person,重写 Introduce 方法,既调用父类逻辑,又扩展个性行为,体现多态特性。
|
2天前
|
存储 安全 C#
C# 数组与集合:List<T> 最常用场景
数组长度固定,集合(List&lt;T&gt;)可动态增删,支持泛型与类型安全。常用操作包括添加、删除、遍历和查询元素,是开发中首选的动态数据存储方式。
|
2天前
|
存储 开发框架 缓存
C# 实现图片验证码的 WebAPI 版(ASP.NET Core)
基于ASP.NET Core实现的验证码服务,生成带干扰线和随机旋转文字的4位图文验证码,支持内存存储与验证。需安装System.Drawing.Common包。
|
2天前
|
C# 索引
C# 循环结构:for/foreach/while 效率对比
循环用于重复执行代码,根据场景选择:for 适合已知次数,foreach 简洁遍历集合,while 适用于条件控制。示例演示遍历商品价格列表并计算总和,展示三种循环的用法与差异。(239字)
|
2天前
|
C#
C# 实现简单的 Excel 数据写入工具
基于EPPlus库实现C#将数据写入Excel文件,支持自定义表头与多行数据,自动调整列宽,操作简便,适用于非商业场景的数据导出需求。
|
2天前
|
网络协议 安全 C#
C# 实现基于 TCP 的简单聊天程序(服务端)
基于TcpListener实现TCP聊天服务器,监听指定端口,接收客户端连接并实时转发消息。支持多客户端并发通信,新连接自动加入广播列表,断开后自动移除,确保线程安全与稳定运行。
|
2天前
|
安全 C# 数据安全/隐私保护
C# 实现验证码 + 登录的整合案例
整合图形验证码与用户登录功能,实现安全的登录验证流程。系统生成验证码图片并校验输入,结合用户名密码双重验证,提升账户安全性,有效防止自动化攻击。

热门文章

最新文章