我试图在列表中只得到奇怪的参数。这是我的一段代码
static void Main(string[] args)
{
var swictches = args.ToList().Select((x, index) => (index % 2) == 1);
var ss = swictches[0];
string test = doc.ReadAllPages();
Console.WriteLine(test.Substring(0, 1000));
Console.Read();
}
在参数列表中,它有开关和参数。我想要获得所有的开关。当我运行此代码时,switch变量如下所示:
false
true
false
而不是像这样
-i
-awq
-l
答案 0 :(得分:6)
使用Where
代替Select
:
var swictches = args.Where((x, index) => (index % 2) == 1).ToList();
此外,您无需致电ToList()
即可使用Where
/ Select
。 string[]
也实现IEnumerable<string>
,因此您可以在其上使用LINQ。而不是在开头调用ToList
将其称为最后一个方法,将结果实例化为List<string>
。
修改强>
正如评论中指出的那样。当您只需要序列中的第一个元素时,应该使用First
,而不是在结果上调用ToList()
并使用[0]
。它会更快:
var ss = args.Where((x, index) => (index % 2) == 1).First();
答案 1 :(得分:2)
var switchesFixed = args.Where((item,index)=&gt; index%2!= 0); //返回偶数args
var switchesFixed = args.Where((item,index)=&gt; index%2 == 0); //返回Odd args
答案 2 :(得分:1)
查找所有开关的另一种变体:
args.Where(s => s.StartsWith("-")).ToList()