C# list.Select 动态设置列
时间: 2024-09-29 14:05:27 浏览: 30
在 C# 中,`List<T>.Select()` 方法通常用于创建一个新的序列,通过对当前列表中的每个元素应用给定的转换函数来改变元素的形式。这个操作返回的是一个 `IEnumerable<TResult>` 类型的结果,其中 `TResult` 是转换后的元素类型。
如果你想动态设置列,即在运行时基于某个条件或表达式选择不同的属性或计算新的值,可以传递一个匿名函数或委托到 `Select()` 中,就像这样:
```csharp
// 假设我们有一个 List<Person> 人名单
List<Person> people = new List<Person>();
// 使用 Select() 根据需要动态设置列,比如只显示名字或年龄
// 如果有 IsAdult 属性来判断是否成人
List<string> adultNames = people.Where(p => p.IsAdult).Select(p => p.Name).ToList(); // 只显示成人的名字
// 或者动态计算百分比
List<int> agePercentages = people.Select(p => (int)(p.Age * 100 / MaxAge)).ToList(); // 计算每人相对于最大年龄的百分比
// 匿名函数的例子:
List<int> agesWithoutYears = people.Select(p => p.DateOfBirth.Year == null ? 0 : p.Age).ToList();
```
在这个例子中,`Select()` 的参数是一个动态定义的行为,可以根据你的需求灵活调整。但是请注意,由于动态性,你需要确保提供的表达式在编译时不会引发错误。
阅读全文