Linq表达式多重左外连接错误

标签 linq sql-to-linq-conversion

我无法执行下面的 linq。

   var items(  from p in Patients 
    join q in MURWorksheets on p.PatientId equals q.PatientId into step1
    from s in step1.DefaultIfEmpty()
    join t in MURWorksheetAnswers on s.MURWorksheetId equals t.MURWorksheetId into step2


    from s2 in step2.DefaultIfEmpty()

    select new {p.FirstName , Date = (s.MURDate == null ? DateTime.Now.Date : s.MURDate),
    s2.MURQuestionnaireId,s2.MURExpctedAnswersId}).ToList();

这里是同样的sql,供大家引用。

select a.FirstName,b.MURDate,c.MURQuestionnaireId,c.MURWorksheetAnswersID from Patients as a
left join MURWorksheet as b on a.PatientId = b.PatientId
left join MURWorksheetAnswers as c on b.MURWorksheetId = c.MURWorksheetId

最佳答案

您粘贴的代码中缺少等号:

var items = (from p in Patients 
    join q in MURWorksheets on p.PatientId equals q.PatientId into step1
    from s in step1.DefaultIfEmpty()
    join t in MURWorksheetAnswers on s.MURWorksheetId equals t.MURWorksheetId into step2


    from s2 in step2.DefaultIfEmpty()

    select new {p.FirstName , Date = (s.MURDate == null ? DateTime.Now.Date : s.MURDate),
    s2.MURQuestionnaireId,s2.MURExpctedAnswersId}).ToList();

关于Linq表达式多重左外连接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18360908/

相关文章:

linq - 基于使用 LINQ 的函数将 IEnumerable<T> 分区/拆分/部分到 IEnumerable<IEnumerable<T>>?

c# - 无法访问转换查询中的表(从纯 SQL 到 LINQ)

c# - Linq To SQL - 具有和分组依据

c# - 基于一个属性合并 2 个列表并连接其他属性

c# - 根据 Predicate<T> 清理 List<T> 的最可靠方法

.net - LINQ中的“Most popular” GROUP BY?

c# - Winforms 中的 System.UnauthorizedAccessException C#

c# - LINQ:连接两个独立上下文的结果