ConfigurationManager.AppSettings.AllKeys
.Where( key => key.StartsWith( "Screen" ) )
.Select( key => ConfigurationManager.AppSettings[key] )
多くの設定 (たとえば、コメントで指定したように 10K) がある場合、AppSettings コレクションがキーによる検索用に最適化されているという事実から恩恵を受ける可能性があります。このためには、「Screen1」、「Screen2」、「Screen3」などを繰り返し試して、値が見つからない場合に停止する必要があります。
Enumerable.Range( 1, int.MaxValue )
.Select( i => ConfigurationManager.AppSettings[ "Screen" + i ] )
.TakeWhile( value => value != null )
ただし、このアプローチは、Knuth 氏が警告した「時期尚早の最適化」とまったく同じです。構成ファイルには、それほど多くの設定を含めるべきではありません。
もう 1 つの欠点: このアプローチでは、"Screen*" 設定の番号付けにギャップがないことを前提としていることを覚えておいてください。つまり、「Screen1」、「Screen2」、「Screen4」がある場合、最後の 1 つをピックアップしません。これらの設定を多数持つことを計画している場合、設定を追加または削除するたびにすべての数値を「シフト」するのは非常に不便です。