*

[C#, Linq]foreach構文は書けるけど、Linqはよくわからなくて勉強する気がなくなった貴方に

公開日: : 最終更新日:2015/08/03 C#

Linq普及委員会エントリです。

いまさらすぎるわ! とか言わないで。
小難しい話はなしに、とりあえず使ってみよう。使ってけば覚えるさ、なノリです。
foreachが書ければそこに一ひねり加えるだけだから簡単簡単。

対象の方

・foreach構文が書ける人
foreachは書けるよ、って人にLinq C#の使い方を広めたい。
この説明ではラムダ式はわからなくてもなんとかなります。

for文が書ける人には、それ向けの書き方もあるんですが、foreachは覚えておいて損はないので、覚えましょう。

そもそもLinqって何?

LinqはいわゆるSQLとかデータの問い合わせの際に、オブジェクト指向っぽく、結果をオブジェクトで欲しい。
そんなのを実現するものです。
ついでに、SQLっぽい書き方も地の文で書けるようにしようぜ! みたいなノリ。

小難しい話は抜きにまずはforeach

Linqは実はforeachに機能を追加したようなものなんです。
foreachで表現できるものはLinqで表現もできる。

というわけでよくあるコレクションに条件一致したものを追加するというforeachを書きます。

ただ数字が5より大きいものを抽出して追加しているだけです。

ほとんどそのままLinqに置き換え

ではforeachはそのままLinqに書き換えができるので、やってみます。
Linqの意味がないLinqなので、実際はこう書いてはだめですよ。

文字数的に、もともと foreach(var val in orgIds)のvarとinが節約できて短縮できました! そうじゃない。

ここはラムダ式的なものになるんですが、Linqだけを手っ取り早く覚えたいなら、

上記は同じ文章だと思ってください。
わざわざvar valって宣言しなくても済むんです。
そして、foreachと同じく、 Hoge.ForEach(val =>で、valにHogeの要素が代入されていくんです。

もちろん↓みたいに宣言もできます。

ただし、この場合はvarで宣言はできないんです。そういうもんなんです。

免許皆伝?

これでLinqを使うことができました。おめでとうございます。
といけたら楽なんですが、上記のLinqはLinqっぽくないLinqと評したように、真価がまだ見えていません。
あのソースだったらforeachでも十分ですからね。

というわけでLinqは何が出来るかというと、先ほどのソースでいえば、条件分岐をわざわざif文で書く必要がありません。
LinqっぽいLinqで書き直してみます。

かなーりすっきりしましたね。
このように本来ならif文で書く部分も短く一行にまとめることができるのがLinqです。

さて、そうなると、出力しているところも冗長に見えてきましたね。
というわけで、全てLinqにしてしまいましょう。

結果的に12行が7行になりました。
素晴らしいことです。
ぜひともLinqを使っていきましょう。

おわり。

ad

関連記事

logo

[Unity]コードリファレンス ソケット通信の開始して接続して切断する。

オンラインゲームを作るためにはソケット通信が必要です。 今回はいきなりソースから。解説は下の方に。

記事を読む

logo

[C#, Generic]UnityのAddComponentとかなんとかComponentを実装してみる

UnityのAddComponentってありますよね。 みたいなやつ。 このジェネリクスの

記事を読む

logo

[C#]XML Serializerで読み書き

XML XMLを触りたいので適当にメモ書き 書き出し using System.IO;

記事を読む

Unity_

[Unity]Unity2Dチュートリアル 同じ色のパズルを消去する

前回の続き。 さて、そろそろパズドラみたいにパズルを消すロジックを考えていきましょう。 パズ

記事を読む

Unity_

[Unity]Unity 2Dチュートリアル スプライトをドラッグ(タップ)して移動する

前回はスプライトの簡単な操作を覚えました。 今回はスプライトを移動させてみましょう。 ドラッグして

記事を読む

logo

[C#]システム関連付けのソフトでファイルを起動する

事の発端 PDFをAdobeReaderで開きたいといわれました。 コマンドラインでAdobeR

記事を読む

instantiate cube unity

[Unity]コードリファレンス GameObjectの複製

GameObjectを複製します。 Object.Instantiate(Object ori

記事を読む

Unity_

[Unity]Unity4.6 UIチュートリアル Lesson6.UI Events and Event Triggers 日本語要約

前回の続き。 ついにずっと画面で見えていた謎のEventSystemに触れます。 なんか

記事を読む

wannabenote_unity

[Unity]コードリファレンス ゲーム時間を表示する。

ゲーム内の時間を表示します。 Timeクラス 時間のためのクラスです。 ゲームが起動してか

記事を読む

Registry レジストリ C# .NET

[.NET, C#]レジストリの値が取得できない原因

正しいPathを指定しているのに 図のような 'HKEY_CURRENT_MACHINE\SO

記事を読む

ad

Message

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

ad

  •  Auther;わなび

     「オープン系得意だよね? 俺のPCの調子悪いんだけど」という無茶振りから解き放たれゲームエンジニアに。
    C#とかUnityを扱います。
    Twitterフォロー大歓迎です。
    githubアカウント→wannabenote
  • follow us in feedly
PAGE TOP ↑