タグ

ブックマーク / kekyo.wordpress.com (3)

  • LINQ – kekyoの丼

    IQueryableで表現されるクエリに、事前評価可能な式が含まれることがある。 using (var context = new AdventureWorksLT2012_DataEntities()) { // 検索条件を変数で与える var selectType = "Shipping"; var addresses = from customerAddress in context.CustomerAddress where customerAddress.AddressType == selectType select customerAddress; } 上記のselectTypeは、LINQクエリ中の条件式に与えられる。これはメソッド構文で言う所のラムダ式に変換されるため、このローカル変数は暗黙のクロージャーのメンバーフィールドとして定義される。この式のExpressionを

    LINQ – kekyoの丼
    maaa328
    maaa328 2014/07/27
  • LINQは本当に強力だ (6) TextFieldContext

    抽象的な話ばかり続いたので、今回は、実用的な例を示そう。 .NETCSVファイルを読み取るとき、まさか自分でパースしたりしていないと思うが、知っていると便利なクラスが「VB.NET」のライブラリに存在する。TextFieldParserクラスだ。VB向けの実装の割には、Streamからの読み取りに対応しているなど、割としっかり作ってある。 今回はこのクラスをLINQで「楽に」使えるようにする。 public static class TextField { // 指定されたCSVファイルへのコンテキストを生成する public static IEnumerable<string[]> Context( string path, string separator = ",", Encoding encoding = null) { using (Stream stream = new Fi

    LINQは本当に強力だ (6) TextFieldContext
  • LINQは本当に強力だ (1) データ加工の究極の道具

    長い間、.NET2.0から知識をアップグレードしていなかったのだが、先日一気に.NET4.0の知識を詰め込んだ。 LINQに触る必要性から、匿名デリゲート・ラムダ式・匿名クラス・式ツリー・拡張メソッドなどを覚えたのだが、はっきり言って今まで勉強を放置してきた事に、激しく後悔している。 「わず嫌い」だったのは、矢継ぎ早に追加される新しい構文に対する抵抗だったような気がする。C++のテンプレート拡張がもめたらしいのも、気持ちはよくわかる。 テンプレートもそうだが、LINQも言語思想の革命と言っても言い過ぎではないぐらいのインパクトがあった。 LINQの何が良いかと言えば、比類なき拡張性だろう。これを支えているのはIEnumerable<T>インターフェイスと、拡張メソッド構文なわけだが、LINQに触ったことが無い人向けに、興味が持てそうな事を書いてみる(但し無保証 🙂 まぁ、もう既に「枯れ

    LINQは本当に強力だ (1) データ加工の究極の道具
  • 1