sql >> データベース >  >> RDS >> Mysql

複数の左結合のLINQメソッド構文

    特定のユーザーの結果をフィルタリングしたいので、UserHasPackagesテーブルに参加したいと思っています(「UserHasPackages.ApplicationUserId」がどこから来たのかわからないため、「SomeUser」を入力しました)。ビューモデルには含まれていません。

    次のようなものが機能すると思います:

    var list = context.Packages
        .Join(context.Containers, p => p.ContainerID, c => c.ID, (p, c) => new { p, c })
        .Join(context.UserHasPackages, pc => pc.p.ID, u => u.PackageID, (pc, u) => new { pc.p, pc.c, u })
        .Where(pcu => pcu.u.UserID == "SomeUser")
        .Select(pcu => new
        {
            pcu.p.ID,
            pcu.c.Name,
            pcu.p.Code,
            pcu.p.Code2
        });
    

    クエリ構文を使用してこれを行うこともできます:

    var query = from package in context.Packages
                join container in context.Containers on package.ContainerID equals container.ID
                join userHasPackage in context.UserHasPackages on package.ID equals userHasPackage.PackageID
                where userHasPackage.UserID == "SomeUser"
                select new
                {
                    package.ID,
                    container.Name,
                    package.Code,
                    package.Code2
                };
    



    1. MySQLのトリガーとテーブルロック

    2. Oracle Not Equals Operator

    3. ID(自動インクリメント)列を使用したBULK INSERT

    4. 関数からフェッチして、レコードに参照カーソルを返します