LINQ-C#用に開発されたSQLに似た言語

2630 ワード

MSXMLとADO.NETはXMLドキュメントを遍歴して操作することができますが、開発者がデータアクセス操作コードを作成するときに快適で自然に感じることはできません.
LINQはデータアクセスを.NETの高度なプログラミングコンセプトは、開発者がスマートセンシング技術に完全に依存して、タイプの安全なデータアクセスコードとコンパイル期間の構文チェックを作成できるようにします.
using文はtry...finallyの簡潔な表現.作成したタイプがIDisposableを実装している場合は、usingを直接使用できます.
匿名メソッド(anonymous method)
// Create a handler for a click event
button1.Click += delegate(System.Object o, System.EventArgs e)
{ System.Windows.Forms.MessageBox.Show("Click!"); };

オブジェクト、コレクション初期化器構文.コンパイラはコレクション初期化コードを完全な形式に変換し、多くの符号化時間を節約します.P 28『LINQプログラミング技術の内幕』
Chapter 3:拡張メソッド(Extension Method):拡張シールクラスと内部タイプを許可し、深さ継承ツリーを回避し、継承を必要としない追加動作を提供します.
例では、最初のパラメータタイプの前にthis修飾子を使用する必要があるDumpという拡張メソッドを追加する方法を示します.
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Reflection;using System.Diagnostics;namespace ConsoleApplication2{    class Program    {        static void Main(string[] args)        {            var song = new { Artist = "JUssi", Song = "Aida"};            song.Dump();            Console.Read();}}public static class Dumper{public static void Dump(this Object o)/objectタイプに作用し、すべてのタイプがobject.{PropertyInfo[]properties=o.GetType().GetProperties();foreach(PropertyInfo p in properties)            {                try                {                    Debug.WriteLine(string.Format("Name: {0}, Value: {1}", p.Name,                        p.GetValue(o, null)));                }                catch                {                    Debug.WriteLine(string.Format("Name: {0}, Value: {1}", p.Name,                        "unk."));                }            }        }
        public static void Dump(this IList list)
        {
             foreach(object o in list)
                  o.Dump();
        }
 }}
P 60~64例3−6と3−8を比較し、Linqがコードをより簡潔にすることを示す.Linqの基礎は拡張方法(汎用型もある)であり,whereはIQueryableを拡張するための拡張方法である.
Chapter 4:yield returnキーワードフレーズは,自身が反復可能な集合ではないオブジェクトを反復可能な集合とすることができる.catchブロックには表示されず、1つ以上のcatch句を持つtryブロックにも表示されません.yield文は匿名メソッドには表示されません.
Chapter 5:
1.
delegate void FunctionPointer(string str);
FunctionPointer fp = s=>Console.WriteLine(s);
fp("hello world");
2.
System.Action fp = s=>Console.WriteLine(s);
fp("hello world");
Funcは、パラメータ上でアクションを実行し、値を返すために使用されます.
Predicateは、条件のセットを定義し、パラメータがこれらの条件に合致するかどうかを決定するために使用されます.