【问题标题】:How to apply multiple joins as like in a SQL query in linq如何在 linq 的 SQL 查询中应用多个连接
【发布时间】:2017-01-17 10:08:02
【问题描述】:

将 SQL 查询转换为 Linq C# 以获得与我在 ASP.NET MVC 应用程序中从该 SQL 查询获得的相同输出:

select  
    Name, 
    count(DISTINCT P.ID) as totalstrengt,
    count(DISTINCT pr.TraineeId) as pr,
    count(DISTINCT phy.TraineeId) as phy,
    count(DISTINCT psy.TraineeId) as psy
from 
    tblDiscipline d  
inner join 
    tblPersonal p on p.Game = d.Id
left join 
    tblPerformance pr on pr.TraineeId = p.Id 
left join 
    tblPhysiologyTest phy on phy.TraineeId = p.Id 
left join 
    tblPsychologicalTest psy  on psy.TraineeId = p.Id 
where 
    CentreName = 61
group by  
    Name

【问题讨论】:

  • 在 lambda 类型中使用 JOIN() 或在经典 SQL 格式 Linq 中使用 join 关键字。使用此帮助:msdn.microsoft.com/en-us/library/bb311040.aspx
  • 我尝试使用,但它显示一些“找不到可枚举的孩子”错误,我可能会错误地创建我的 linq 查询

标签: c# sql-server asp.net-mvc linq


【解决方案1】:
 var db = new QCDataClassesDataContext();
                if (StartDate == DateTime.MinValue)
                    StartDate = DateTime.Now.AddDays(-30);
                if (EndDate == DateTime.MinValue)
                    EndDate = DateTime.Now;  


  var objSelect = (from R in db.tblQCResults
                                                                                       join D in db.tblDeliverables on R.dbDeliverablesId equals D.dbId
                                                                                       join C in db.tblClients on D.dbClientId equals C.dbId
                                                                                       join E in db.tblEmployees on R.dbAssignedTo equals E.dbEmpId
                                                                                       where Convert.ToDateTime( R.dbQCDate).Date >= Convert.ToDateTime(StartDate).Date &&
                                                                                             Convert.ToDateTime(R.dbQCDate).Date <= Convert.ToDateTime(EndDate).Date
                                                                                             && R.dbQCBy == strEmpId
                                                                                       //&& R.dbStatus == false
                                                                                       orderby R.dbQCOn descending
                                                                                       select new
                                                                                       {
                                                                                           Client = C.dbClientName,
                                                                                           Deliverables = D.dbDeliverablesName,
                                                                                           EmployeeName = E.dbName,
                                                                                           TotalUploadedAccount = R.dbTotalUploadedAccount,
                                                                                           TotalQCAccount = R.dbTotalQCAccount,
                                                                                           Id = R.dbId,
                                                                                           QCOnDate = R.dbQCOn,
                                                                                           FileDate = R.dbFileDate,
                                                                                           Status = R.dbStatus,
                                                                                           EmpId = E.dbEmpId
                                                                                       }):

【讨论】:

  • 这个查询写入方法,我们传递一些参数,如 strEmpId、StartDate、EndDate
  • 我尝试按照我的方式转换您的查询,但它对我不起作用:(
猜你喜欢
  • 2021-07-11
  • 2019-08-02
  • 2016-02-17
  • 1970-01-01
  • 2015-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-14
相关资源
最近更新 更多