C#の、基本的なモジュールのASP.NETコア1:LINQ(オリジナル)

私は、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 "89 }; 

            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():長時間実行中のタスクをキャンセルするために使用

              彼らの知識を適用し、ゆっくりと進行

おすすめ

転載: www.cnblogs.com/fengxiaojiu/p/11953016.html