我想过滤一个字符串数组:
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捕获创建的列表的副本,是否已修改,而不是原始列表本身?
答案 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());