4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

全ての要素が条件を満たしているか?というLINQ

Posted at

俺の拙い脳みそから記憶が揮発しないように、あえて書いています。
ブログにでも書け!というご意見は謹んでスルーします。

#すぐにLINQでハマるのが、僕の悪いクセ

List<string> strings の中から、"a"で始まる要素があるかを判断する場合。

strings.Any(str => str.StartWith("a"));

これは知ってたから、すんなり解決できた。

でも、違う壁にぶちあったんだ。

#Anyでできないことってあるの?
こういう存在の有無を確認する系は、Anyさえ使えればanything OK!だと思ってた。

###次はすべて"a"で始まるか?の判断
あの時(といっても数日前)の俺は若かった。

strings.Any(str => !str.StartWith("a"));

「いやいや!これじゃ"a"で始まらない要素がある証明だろ!」
というのはチェッカーの言葉。かなり声は荒めで。

いやープッシュする前に自分でテストしてないんかい!って話なんですけど(笑

###答えは教えてくれないんだ
仕方なく自分の席に戻り考えること数秒。
なんだ簡単じゃん!で提出したのがこれ。

!strings.Any(str => str.StartWith("a"));

無言で突き返された。
そして、マネージャーに呼び出された。理由は説明するまでもないよね。また、テストせずにプッシュしたんだ。
ちなみにこれだと"a"で始まる要素がないことの証明だね。そうだね、プロテインだね。

##あれ?Anyじゃできないの?
なんとか俺のしょうもない脳みそで絞り出した結果。

!strings.Any(str => !str.StartWith("a"));

あれ、できたんじゃないか??
"a"で始まらない要素が無い == 全ての要素が"a"で始まっているということ。
狂喜乱舞してプルリク!

#ただの不勉強だったという結論
こう書くんだって。

strings.All(str => str.StartWith("a"));

わかりやすい。。。圧倒的ッ!

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?