从SQL到LINQ的左连接子查询

时间:2019-04-17 16:17:10

标签: c# sql linq

我是LINQ的新手,正在尝试编写将某些SQL转换为LINQ的方法,但不确定我的代码有什么问题。我正在尝试对子查询进行多个左联接,但不确定如何在LINQ中完成此操作。如果有任何结果,我需要返回1。任何帮助表示赞赏。

SQL

echo '{ "experimental": true }' | sudo tee /etc/docker/daemon.json
sudo service docker restart

LINQ

.foo{
    width:100vw;
}

1 个答案:

答案 0 :(得分:0)

查看下面的代码是否有帮助。我认为这不是100%正确,但是关闭

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication108
{
    class Program
    {
        static void Main(string[] args)
        {
            DataBase db = new DataBase();
            int ProcessStatus = 1;
            int ProcessID = 21;
            int Status = 1;
            DateTime today = DateTime.Now.Date;
            string BankAccountID = "ABC";
            int AdjustmentMethod = 5;

            var results = (from A in db.Approved
                               .Where(x => (x.ProcessID == ProcessID) 
                                   && (x.Status == Status) 
                                   && (x.EffectiveStartDate >= today) 
                                   && (today < x.EffectiveEndDate))
                          join OA in db.OrgApproval
                               .Where(x => (x.ProcessID == ProcessID) 
                                   && (x.EffectiveStartDate >= today) 
                                   && (today < x.EffectiveEndDate) 
                                   && (x.BankAccountID == BankAccountID) 
                                   && (x.ValidatedFlag == DBNull.Value)
                                   && (x.ProcessStatus == ProcessStatus)
                                   && (x.AdjustmentMethod == AdjustmentMethod)) on A.OrgApprovalID equals OA.OrgApprovalID
                          select new { A = A, OA = OA })
                          .Where(x => (x.OA.ApprovalLevel < db.OrgApproval.Where(y => x.OA.OrgStructureID == y.OrgStructureID).Max(z => z.ApprovalLevel)) && (x.A.ApprovalLevel == x.OA.ApprovalLevel))
                          .GroupBy(x => x.OA.OrgStructureID)
                          .SelectMany(x =>  x.Select(y => new { RecordIDKey = y.A.RecordIDKey, ApprovalLevel = y.A.ApprovalLevel}))
                          .ToList();

        }

    }
    public class DataBase
    {
        public List<Approved> Approved { get; set; }
        public List<OrgApproval> OrgApproval { get; set; } 
    }
    public class Approved
    {
        public string OrgApprovalID { get; set; }
        public int ProcessID { get; set; }
        public int Status { get; set; }
        public DateTime EffectiveStartDate { get; set; }
        public DateTime EffectiveEndDate { get; set; }

        public string RecordIDKey { get; set; }
        public int ApprovalLevel { get; set; }
    }
    public class OrgApproval
    {
        public int ProcessID { get; set; }
        public string OrgApprovalID { get; set; }
        public string  OrgStructureID { get; set; }
        public int ApprovalLevel { get; set; }
        public string NumberofApprovalRequired { get; set; }
        public string BankAccountID { get; set; }
        public object ValidatedFlag { get; set; }
        public int ProcessStatus { get; set; }
        public int AdjustmentMethod { get; set; }
        public int CurrentLevel { get; set; }


        public DateTime EffectiveStartDate { get; set; }
        public DateTime EffectiveEndDate { get; set; }
    }




}
相关问题