1

リストで奇妙な引数のみを取得しようとしています。これが私のコードの一部です

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

引数リストには、スイッチとパラメーターがあります。すべてのスイッチを取得しようとしています。このコードを実行すると、スイッチ変数は次のようになります。

false
true
false

このような代わりに

-i
-awq
-l
4

3 に答える 3

6

Whereの代わりに使用Select:

var swictches = args.Where((x, index) => (index % 2) == 1).ToList();
  • Where指定された述語に基づいてアイテムをフィルタリングします。
  • Select要素をある形式から別の形式に射影します (コード内のstringtoから)。bool

また、 /ToList()を使用するために呼び出す必要はありません。も実装しているので、LINQ をそのまま使用できます。最初に呼び出す代わりに、最後のメソッドとして呼び出して、結果を にインスタンス化します。WhereSelectstring[]IEnumerable<string>ToListList<string>

編集:

コメントで指摘されているように。First結果を呼び出しToList()て使用するのではなく、シーケンスの最初の要素だけが必要な場合に使用する必要があり[0]ます。それはより速くなります:

var ss = args.Where((x, index) => (index % 2) == 1).First();
于 2013-09-09T19:53:36.773 に答える
2

var switchFixed = args.Where((item, index) => index % 2 != 0); // 偶数の引数を返します

var switchFixed = args.Where((item, index) => index % 2 == 0); //奇数の引数を返します

于 2013-09-09T20:06:36.413 に答える
1

すべてのスイッチを見つける別のバリ​​アント:
args.Where(s => s.StartsWith("-")).ToList()

于 2013-09-09T20:00:24.027 に答える