如何在 .NET 中使用 Lambda 表达式获取不同的值:最佳实践与示例
                           
天天向上
发布: 2025-01-25 23:49:58

原创
766 人浏览过

在 .NET 中,使用 Lambda 表达式可以通过不同的方式获取和处理集合中的值。Lambda 表达式是一种简洁的匿名方法表示法,通常用于 LINQ 查询和委托,能够非常灵活地对数据进行过滤、映射、排序、聚合等操作。

获取不同的值

  1. 从集合中过滤唯一值
    假设你有一个集合,并希望从中获取不同的值,可以使用 Distinct() 方法结合 Lambda 表达式来实现。 示例:
   using System;
   using System.Linq;
   using System.Collections.Generic;

   public class Program
   {
       public static void Main()
       {
           var numbers = new List<int> { 1, 2, 2, 3, 4, 4, 5 };

           // 使用 Lambda 表达式和 Distinct 获取不同的数字
           var distinctNumbers = numbers.Distinct().ToList();

           foreach (var number in distinctNumbers)
           {
               Console.WriteLine(number);
           }
       }
   }

输出:

   1
   2
   3
   4
   5
  1. 通过 Lambda 获取不同的属性值
    如果你有一个对象列表,并且想要获取某个特定属性的唯一值,可以使用 DistinctBy(需要引用 System.Linq 扩展库)来实现。 示例:
   using System;
   using System.Linq;
   using System.Collections.Generic;

   public class Person
   {
       public string Name { get; set; }
       public int Age { get; set; }
   }

   public class Program
   {
       public static void Main()
       {
           var people = new List<Person>
           {
               new Person { Name = "Alice", Age = 25 },
               new Person { Name = "Bob", Age = 30 },
               new Person { Name = "Alice", Age = 25 },
               new Person { Name = "Charlie", Age = 35 }
           };

           // 获取唯一的 Name 值
           var distinctNames = people
               .Select(p => p.Name)
               .Distinct()
               .ToList();

           foreach (var name in distinctNames)
           {
               Console.WriteLine(name);
           }
       }
   }

输出:

   Alice
   Bob
   Charlie
  1. 获取多个条件下的不同值
    如果要获取基于多个条件的唯一值(例如根据多个属性来判断唯一性),可以使用 GroupBy() 配合 Lambda 表达式来获取分组后的唯一值。 示例:
   using System;
   using System.Linq;
   using System.Collections.Generic;

   public class Person
   {
       public string Name { get; set; }
       public int Age { get; set; }
   }

   public class Program
   {
       public static void Main()
       {
           var people = new List<Person>
           {
               new Person { Name = "Alice", Age = 25 },
               new Person { Name = "Bob", Age = 30 },
               new Person { Name = "Alice", Age = 30 },
               new Person { Name = "Charlie", Age = 35 }
           };

           // 根据 Name 和 Age 获取不同的值
           var uniquePeople = people
               .GroupBy(p => new { p.Name, p.Age })
               .Select(g => g.First())
               .ToList();

           foreach (var person in uniquePeople)
           {
               Console.WriteLine($"{person.Name} - {person.Age}");
           }
       }
   }

输出:

   Alice - 25
   Bob - 30
   Alice - 30
   Charlie - 35

总结:

  • 使用 Distinct() 可以从集合中去除重复的元素,获取不同的值。
  • 使用 DistinctBy() 可以根据对象的某个或多个属性获取唯一的值(如果 .NET 版本支持)。
  • GroupBy() 可以用于多个条件的唯一值获取,适用于复杂的数据结构。

Lambda 表达式让这些操作更加简洁和易读,同时提高了代码的可维护性和可扩展性。

发表回复 0

Your email address will not be published. Required fields are marked *