C# 中的匿名类型在 LINQ 查询中有何用处?

来源:这里教程网 时间:2026-02-21 17:26:37 作者:

匿名类型在 C# 的 LINQ 查询中主要用于临时封装查询结果,而无需提前定义具体的类。当你只想从对象中提取几个属性,并以简洁的方式组织数据时,匿名类型就显得非常实用。

简化数据投影

在 LINQ 查询中,经常需要从集合中选择部分字段而非整个对象。使用匿名类型可以轻松实现这种“投影”操作。

例如,有一个用户列表,你只关心姓名和年龄:

var users = new[]
{
  new { Name = "Alice", Age = 30, City = "Beijing" },
  new { Name = "Bob", Age = 25, City = "Shanghai" }
};

var query = from u in users
       select new { u.Name, u.Age };

这里的 new { u.Name, u.Age } 创建了一个包含 Name 和 Age 的匿名类型实例。这样返回的结果更轻量,也更符合当前场景的需求。

支持中间计算或重命名字段

匿名类型允许在查询过程中进行计算,或将字段重命名为更有意义的名称。

var query = from u in users
       select new
       {
         FullName = u.Name,
         IsAdult = u.Age >= 18
       };

这个查询将字段改名为 FullName,并添加一个布尔值表示是否成年。这些数据结构仅在当前作用域内使用,无需额外定义类。

与 group、join 等复杂查询配合使用

在分组或连接操作中,常需组合多个来源的数据。匿名类型能灵活地构建临时结构来承载这些信息。

var grouped = from u in users
         group u by u.City into g
         select new
         {
           City = g.Key,
           Count = g.Count()
         };

这里的结果是一个包含城市名和人数的对象集合,结构清晰且专为展示统计结果设计。

基本上就这些。匿名类型让 LINQ 查询更加灵活、直观,特别适合处理短期、局部的数据转换需求,避免了为一次性结构创建多余类的麻烦。

相关推荐