ZetCode

ASP.NET List

最后修改于 2025 年 4 月 3 日

在本文中,我们将探讨 ASP.NET 8 中的 List<T> 集合。List 是 .NET 应用程序中用于存储和操作对象集合的基本数据结构。

ASP.NET 是一个跨平台、高性能的框架,用于构建现代 Web 应用程序。List<T> 类提供了强大的方法来处理内存中的数据集合。

基本定义

List<T> 是 .NET 中的一个泛型集合类,表示一个强类型对象列表。它提供了搜索、排序和操作列表的方法。

与数组不同,List 可以根据需要动态地增长和缩小。与传统数组相比,它们为大多数操作提供了更好的性能。

List 属于 System.Collections.Generic 命名空间。它实现了IList<T>、ICollection<T> 和 IEnumerable<T> 等多个接口。

ASP.NET List 示例

以下示例演示了如何在 ASP.NET Web API 控制器中使用 List<T> 来管理产品集合。

Program.cs
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();

var app = builder.Build();

app.MapControllers();
app.Run();

这设置了一个基本的 ASP.NET 应用程序,并支持控制器。MapControllers 方法为控制器启用属性路由。

Controllers/ProductsController.cs
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;

[ApiController]
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{
    private static List<Product> _products = new List<Product>
    {
        new Product { Id = 1, Name = "Laptop", Price = 999.99m },
        new Product { Id = 2, Name = "Mouse", Price = 19.99m },
        new Product { Id = 3, Name = "Keyboard", Price = 49.99m }
    };

    [HttpGet]
    public ActionResult<List<Product>> GetAllProducts()
    {
        return _products;
    }

    [HttpPost]
    public ActionResult<Product> AddProduct([FromBody] Product product)
    {
        product.Id = _products.Max(p => p.Id) + 1;
        _products.Add(product);
        return CreatedAtAction(nameof(GetProductById), 
            new { id = product.Id }, product);
    }

    [HttpGet("{id}")]
    public ActionResult<Product> GetProductById(int id)
    {
        var product = _products.FirstOrDefault(p => p.Id == id);
        if (product == null) return NotFound();
        return product;
    }

    [HttpPut("{id}")]
    public IActionResult UpdateProduct(int id, [FromBody] Product product)
    {
        var existingProduct = _products.FirstOrDefault(p => p.Id == id);
        if (existingProduct == null) return NotFound();

        existingProduct.Name = product.Name;
        existingProduct.Price = product.Price;
        return NoContent();
    }

    [HttpDelete("{id}")]
    public IActionResult DeleteProduct(int id)
    {
        var product = _products.FirstOrDefault(p => p.Id == id);
        if (product == null) return NotFound();

        _products.Remove(product);
        return NoContent();
    }
}

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

此控制器使用 List<Product> 作为内存数据存储来演示 CRUD 操作。该列表已初始化为三个示例产品。

GetAllProducts 方法返回整个列表。AddProduct 向列表添加一个新产品并为其分配一个新 ID。GetProductById 使用 LINQ 的 FirstOrDefault 按 ID 查找产品。

UpdateProduct 修改列表中的现有产品。DeleteProduct 从列表中删除产品。所有方法均返回适当的 HTTP 状态码。

该示例展示了如何将 List<T> 用作简单的内存数据库以供演示。在实际应用程序中,您通常会使用合适的数据库。

来源

Microsoft List<T> 文档

在本文中,我们探讨了 ASP.NET 8 中的 List<T> 集合。这个多功能类对于在 .NET 应用程序中处理对象集合至关重要。

作者

我的名字是 Jan Bodnar,我是一名充满激情的程序员,拥有丰富的编程经验。我自 2007 年开始撰写编程文章。迄今为止,我已撰写了 1400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出所有 ASP.NET 教程