如何在 .NET 中使用 Lambda 表达式获取不同的值:最佳实践与示例
在 .NET 中,使用 Lambda 表达式可以通过不同的方式获取和处理集合中的值。Lambda 表达式是一种简洁的匿名方法表示法,通常用于 LINQ 查询和委托,能够非常灵活地对数据进行过滤、映射、排序、聚合等操作。
获取不同的值
- 从集合中过滤唯一值:
假设你有一个集合,并希望从中获取不同的值,可以使用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
- 通过 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
- 获取多个条件下的不同值:
如果要获取基于多个条件的唯一值(例如根据多个属性来判断唯一性),可以使用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 表达式让这些操作更加简洁和易读,同时提高了代码的可维护性和可扩展性。