私は、LINQと深交換に来ることを決めたように、最近のデータのクエリ、LINQは本当に、はるかに強力な、そしてより便利よりも私の印象を見つけました
財団は、百度のLINQパイルを使用することができますので、私は別の何かを記録し、私が使用するアイテムを組み合わせて行います。
LINQとは何ですか?
L INQ(統合言語クエリ、統合言語クエリ)
利点:1)LINQは、抽象化層の異なるデータソースを提供し、異なるデータ・ソースにアクセスするために同じ構文を使用することが可能です
2)LINQ)は感情的に、このために(ある程度のデータにアクセスするの複雑さを軽減します
3)LINQは、コンパイル時ではなく、実行時にチェックします。だから、構文エラーがタイムリーに修正することができます
4)LINQ定義されたクエリ式が直ちに実行されず、当然の拡張方法がある(反復で行われる)、直ちに実行させることができます。
だから我々は、クエリの効率を気にすることなく、複雑なクエリを分離できること。
短所:1)シンタックスシュガーLINQ、最終的にはSQL文に変換し、これは通常の状況下では、少しパフォーマンスに影響しますが、無視することができます
データXiecai数百万のための無力の行のSQL百2)LINQ、
3)LINQの使用は、より、簡単に「忘れる」とプログラマのためのSQL文を作成する方法に関係していません。
LINQ機能(記録部)
1、スクリーニング、スクリーニングインデックス型フィルタ
// 簡単なスクリーニングはどこ、ここに記録しないで
// ここインデックスフィルタの例を @ -インデックス()メソッドをリロードし、2番目のパラメータは転送されてもよい:説明。インデックスは、各フィルタリターンカウンタの結果です。 // このインデックスは、インデックスに基づいて計算を実行、式の中で使用することができます。 // 姓J、でも、インデックス名の先頭に戻るためにインデックスを使用 VAR NAMELIST = 新しい新しいリスト< 文字列 > { 「ニース」、「Juer 」、「ジェリー」、「ケリー」、「アンバー」、「IORT 」;} VAR結果= nameList.Where((R、指数)=> r.StartsWith(" J ")&&インデックス%2 == 0 )。 foreachの(VARのアイテムにおける結果){ Console.WriteLineを(アイテム)。 }
输出结果:ジェリー
// OfType()スクリーニングの種類に基づいて、 オブジェクト [] = {データ" ケリー"、123、" AMBIN "、8、9 }; VARクエリ= data.OfType < ストリング > (); foreachの(VARの項目にクエリ){ コンソール.WriteLine(項目); }
//出力:ケリーAmbin
2、from句の複合
// from句複合記載学生が対象グレード有するクラスである VARを =データから R&LT でstuednt から C にr.grade SELECT R&LT。
3、ソート、グループ化、重合操作(この場合、プロジェクトのニーズに由来)
// 基としてクエリテーブル、インボイスの種類(4種)と異常状態(5種類):要件 // それぞれの種についての各請求書内のシートの総数の解析及び各異常状態の可能性 // 結果は20種類の合計 // ソート(ORDERBY)、グループ(グループの) // 説明:fapList:請求書テーブル情報AbnormalReasonとInvoiceTypeはは、列挙の独自の定義である VARデータ= からでfapList WHERE a.Yiczt = AbnormalReason! &&すべて(a.Fapzl == InvoiceType.VatOrdinary || によってグループA 新しい新しい{a.Fapzl、a.Yiczt INTO G} のOrderBy g.Key.Fapzl SELECT 新しい新しいです{ g.Key.Yiczt、 g.Key.Fapzl、 Shuie = g.Sum(U => u.Shuie)、 jine = g.Sum(U => u.Jine)、 zhuangyfpCount = g.Count(U => U .Fapzl == InvoiceType.VatSpecial)、 putfpCount = g.Count(U => u.Fapzl == InvoiceType.VatOrdinary)、 dianzfpCount = g.Count(U => u.Fapzl == InvoiceType.VatElectronicOrdinary)、 jidcfpCount = G .Count(U => u.Fapzl == InvoiceType.VatMotorSpecial) toatlCount = g.Count() }。
図4に示すように、ネストされたオブジェクトのパケット
/// ネストされたグループオブジェクトが /// 説明:クエリ:データテーブルQUERY2:ID関係表2つに対応するテーブルのFapid表Iおよび表II表IIのデータ:多く /// 要件:表は、II記録する記録日時の対応表および表中の組成は、表示 するvar =検索結果をから R&LT におけるクエリ SELECT 新しい新しい{ r.Faphm、 r.Fapzl、 r.Fapdm、 r.Id、 chayjlist =(から T 中QUERY2 WHERE t.Lslx == == HistoryType.Check && t.Fapidr.Id ORDERBY t.CreationTime下降 選択 新しい{ t.Chaycg、 t.Jiegms、 t.Jiegnr、 t.Chaycs、 t.CreationTimeを })(ください。1 ) }。
左外側、グループ接続を接続5、コネクタ、
// すべてのデータ列を返すために、左(コネクタ列子内を移動していないここで、以下の接続グループは、特別な記録に時間が経過した後、列子には移動しない):外側左 VAR STR =をから R&LT にQuery1を 参加Tを中QUERY2 RTのt.Fapid INTO ON r.Id等しい から T にrt.DefaultIfEmpty() SELECT 新しい新しい{ r.Fapdm、 r.Faphmを }。
6、集合演算:個別()、連合()、交差()、)(ただし、
これを参照:https://www.cnblogs.com/fengxiaojiu/p/7886885.html
7、合併
ZIP()メソッドは、一つのチューブに2つのライン配列と述語機能を可能にします。
8、並列LINQ
AsParallel():大規模なデータ収集の処理はCPUを大量に取り上げます
9.キャンセル
WithCancellation():長時間実行中のタスクをキャンセルするために使用
彼らの知識を適用し、ゆっくりと進行