使用ForEach lambda修改列表中的元素

时间:2015-09-04 03:18:09

标签: c# linq

我想过滤一个字符串数组:

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列表,其中的单词以&#39; - &#39;开头。小写 - 即lambda未被应用。为什么是这样?是为lambda捕获创建的列表的副本,是否已修改,而不是原始列表本身?

1 个答案:

答案 0 :(得分:5)

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());