我想过滤一个字符串数组:
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());
关于c# - 使用 ForEach lambda 修改列表中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32389528/