投稿

5月, 2018の投稿を表示しています

LINQを使用し、ソースコードの可読性を高める

こんにちは。福岡事務所の荒平です。 今回はソースコードの可読性を高める方法について説明していきたいと思います。 例えばC#で二つのDataTableを比べ、片方のTableにだけ存在するデータを取得したい、 というとき、皆さんはどのようにして処理を書きますか? ------------------------------------------------------- TableA TableB  果物  在庫数 果物  在庫数 リンゴ    100 リンゴ  130 ミカン  120 バナナ  120 バナナ  140 ブドウ  150 ブドウ  150 このTableAとTableBを比べ、TableAにしか存在しない果物(ミカン)のデータのみを取得したい ------------------------------------------------------- いくつか方法はありますが、このように考えた方もいるのではないのでしょうか? ・for文やforeach文などを二重にループさせ、  if文などで果物が両方に存在するかどうかを判定する しかし、この方法だと以下のようなデメリットがあります。 1. ネスト構造になるため、他の人が見た場合、可読性が低くなる 2. if文が必要になったり、あらかじめTableのレコードの並び順が決まっていないといけないなど、余計なコードが増えたり、前提条件が必要になる そこで、こういった問題を解決するために最近のC#ではLINQを使用します。 ちなみにLINQとはLanguage INtegrated Query(統合言語クエリ)の略で、 データの集合から特定のデータのみを取得したり、検索や集計などをしてくれる機能です。 ということでさっそくLINQを使用してみましょう。 -------------------------------------------------------  var Record = (from rowA in TableA.AsEnumerable()        where !((from rowB in TableB.AsEnumerable()