我想过滤一个字符串数组:
string[] args
Run Code Online (Sandbox Code Playgroud)
从命令行,例如:" - command1 xy -command2 ab -command3 c d"
在开头用" - "表示所有单词,然后将这些单词转换为大写.
var commands = args.Where(x => x.StartsWith("-")).ToList<String>();
commands.ForEach(x => {
x.ToUpper()
});
commands.ToString();
Run Code Online (Sandbox Code Playgroud)
这将返回带有以" - "小写字母开头的单词的args列表 - 即lambda未被应用.为什么是这样?是为lambda捕获创建的列表的副本,是否已修改,而不是原始列表本身?
var commands = args.Where(x => x.StartsWith("-")).Select(y => y.ToUpper()).ToList();
Run Code Online (Sandbox Code Playgroud)
要么
var upperCommands = new List<String>();
var commands = args.Where(x => x.StartsWith("-")).ToList<String>();
commands.ForEach(x => upperCommands.Add(
x.ToUpper());
Run Code Online (Sandbox Code Playgroud)