使用ForEach lambda修改列表中的元素
本文关键字:元素 列表 修改 ForEach lambda 使用 | 更新日期: 2023-09-27 18:11:12
我想过滤一个字符串数组:
string[] args
从命令行,例如:"-command1 x y -command2 a b -command3 c d"
取所有以'-'开头的单词,然后将其转换为大写。
var commands = args.Where(x => x.StartsWith("-")).ToList<String>();
commands.ForEach(x => {
x.ToUpper()
});
commands.ToString();
这将返回以小写'-'开头的单词的args列表-即没有应用lambda。为什么会这样?是否为lambda捕获制作了列表的副本,并对其进行了修改,而不是原始列表本身?
var commands = args.Where(x => x.StartsWith("-")).Select(y => y.ToUpper()).ToList();
或
var upperCommands = new List<String>();
var commands = args.Where(x => x.StartsWith("-")).ToList<String>();
commands.ForEach(x => upperCommands.Add(
x.ToUpper());