0

文字列の配列があり、"81" または "82" で始まるエントリのみを取得する必要があります。私はこのように試しました:

var lines = File.ReadAllLines(fileName); // This returns an array of strings
lines = lines.TakeWhile(item => item.StartsWith("81") ||item.StartsWith("82")).ToArray();

しかし、これはうまくいきません。空の文字列配列を返します。

forループで行をループして毎回比較すると

if (!firstline.Substring(0, 2).StartsWith("81")) continue;

次に、必要なエントリを取得します。正常に機能しています。

LINQ を正しく使用する方法について何か提案はありますか?

4

1 に答える 1

8

使用する必要がありますWhere()

lines = lines.Where(item => item.StartsWith("81") || item.StartsWith("82")).ToArray();

TakeWhile条件が false になるまでシーケンスを実行しますが、Where 続行して条件に一致するすべての要素を検索します。

于 2015-02-22T17:14:51.707 に答える