如何获得奇怪的论点

时间:2013-09-09 19:52:14

标签: c# linq

我试图在列表中只得到奇怪的参数。这是我的一段代码

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

3 个答案:

答案 0 :(得分:6)

使用Where代替Select

var swictches = args.Where((x, index) => (index % 2) == 1).ToList();
  • Where根据指定的谓词过滤项目。
  • Select将元素从一种格式投射到另一种格式(在代码中从stringbool)。

此外,您无需致电ToList()即可使用Where / Selectstring[]也实现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()