BT

LINQ to Objectsプロジェクト:EduLINQ、 MoreLINQ、LINQBridge

| 作者: Abel Avram フォローする 7 人のフォロワー , 翻訳者 編集部N フォローする 0 人のフォロワー 投稿日 2011年3月16日. 推定読書時間: 2 分 |

原文(投稿日:2011/03/10)へのリンク

EduLINQは、いかに LINQ to Objects オペレータが動くかを説明するための試みである。 MoreLINQ は、標準のオペレータを拡張した、LINQ to Objects オペレータのセットである。LINQBridge は、 LINQ to Objectsの.NET Framework 2.0へのポートである。

Jonathan Skeet氏は、2003年以来、 Microsoft C# MVPで、“C# in Depth”という本の著者であるが、最近 EduLINQプロジェクトという、LINQメソッドがいかに機能するかを説明する試みで、 LINQ to Objectsの再実装を終えた。 Apache License 2.0のもとにリリースされたこのプロジェクトには、ソースコードとユニットテストが付いていて、.NET Framework 3.5をターゲットにしている。氏による、学んだ教訓は以下である。

  • LINQ to Objectsは、拡張メソッド、デリゲート、IEnumerable<T> をベースにしている
  • オペレータは、適切であれば遅延実行を使い、可能であればデータを流す
  • オペレータは、元のソースを変えないで、適切なデータを返す新しいシーケンスを返す
  • クエリ式は、パターンのコンパイラ翻訳に基づいている。もうパターンを実装する必要はなく、関連するクエリ式だけである
  • イテレータ ブロックは、遅延実行を実装するのに非常に都合がいい
  • しかし、念入りの引数バリデーションが苦痛になる

氏は、MoreLINQと呼ばれるプロジェクトを作った。これは標準の LINQ to Objectオペレータを補完する 21ヶのオペレータ を持つライブラリである。

  • Batch – 「Batchは、ソース シーケンスをバケットの大きさにまとめる」
  • Consume –「完全に特定シーケンスを消費する。このメソッドは直ちに実行され、実行中のデータは保存しない」
  • EquiZip –「タプルの写像を返す。各タプルは、各引数のシーケンスからのN番目の要素を持っている」
  • MaxBy –「特定の写像を基に、特定シーケンスの最大要素を返す」
  • Scan – 「要素のシーケンスに対してスキャンを実行する(包括的なプレフィックスの合計)」
  • Zip –「タプルの写像を返す。各タプルは、各引数のシーケンスからのN番目の要素を持っている」

LINQBridge は、LINQ to Objectsを.NET Framework 2.0へポートしたもので、.NET Frameworkの以前のバージョンを使って、困っていた人たちにLINQの柔軟性とパワーを提供するものである。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT