Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 林氏;ASP.NET MVC:如何使用;或;及;等于;in-join语句_C#_Sql_Asp.net Mvc_Linq - Fatal编程技术网

C# 林氏;ASP.NET MVC:如何使用;或;及;等于;in-join语句

C# 林氏;ASP.NET MVC:如何使用;或;及;等于;in-join语句,c#,sql,asp.net-mvc,linq,C#,Sql,Asp.net Mvc,Linq,请问如何在linq查询中转换此sql查询 USE [BiblioDB] GO SELECT * FROM Exemplaire e LEFT JOIN location l ON e.ExemplaireId = l.ExemplaireId INNER JOIN Retour r ON l.LocationId is null or l.LocationId = r.LocationId Go 我尝试了这个linq查询,但第四行不起作用 Bibl

请问如何在linq查询中转换此sql查询

USE [BiblioDB]
 GO
 SELECT *
   FROM Exemplaire e
    LEFT JOIN location l
    ON e.ExemplaireId = l.ExemplaireId
    INNER JOIN Retour r
    ON l.LocationId is null or l.LocationId = r.LocationId
 Go
我尝试了这个linq查询,但第四行不起作用

 BiblioDBContext biblioDBContext = new BiblioDBContext();
 var query = from e in biblioDBContext.Exemplaires
           join l in biblioDBContext.Locations on e.ExemplaireId equals l.LocationId
           join r in biblioDBContext.Retours on l.LocationId == null || l.LocationId equals r.LocationId r.LocationId
 select e;
试试这个:

 BiblioDBContext biblioDBContext = new BiblioDBContext();
 var query = from e in biblioDBContext.Exemplaires
     join l in biblioDBContext.Locations on e.ExemplaireId equals l.ExemplaireId into el
     from l in el.DefaultIfEmpty()
     from r in biblioDBContext.Retours
     where (l.LocationId == null) || (l.LocationId.Equals(r.LocationId))
 select new {e, l, r};

问题是缺少左联接所需的
DefaultIfEmpty()
子句。

错误:运算符“| |”不能应用于“bool”和“int”类型的操作数。我们没有您的类型的类型信息或解决问题所需的所有信息;另外,当一个用户给了你一个答案,你说,“我有15个错误”,而没有编辑你的问题与你得到的准确错误。我不知道你希望我们如何帮助你,而不给我们所有需要帮助的信息。@Sounouk你有什么错误?如果您不给我们解决您的问题所需的反馈,您希望我们如何帮助您?我已经编辑了我的答案。现在可以用了吗?如果没有,请发布错误消息。@GeorgeStocker,我试图添加错误消息,但无法添加,字符数超出了授权。对不起@扎农,谢谢你!代码可以工作,但没有返回值,我为测试注释了行“where l.LocationId==null”,系统返回了“Retours”表的值。下面是一个预期返回值的示例:examplaire={e1,e2,e3};位置={e2,e3};Retour={e2}。。。系统应返回:e1,e2@Sounouk,我又编辑了一遍。您的OR运算符不能放在Linq Join中,因此我必须在WHERE子句中使用另一个from(SelectMany)和OR运算符。