c# - Left Join Linq 查询条件未过滤
问题描述
我正在尝试进行左联接,即 1 个用户记录有 1 个(如果存在)与之关联的联系人记录。当它运行时,它仍然会拉多个联系人,而忽略我的 'where c.RecordType == "USR"' 的条件。
public class Users
{
public int Id { get; set; }
... other properties
public Contact Contact { get; set; }
}
public class Contact
{
public int Id { get; set; }
public int RecordID { get; set; }
public string RecordType { get; set; }
[ForeignKey("RecordID")]
public Users User { get; set; }
}
Linq 查询
var query3 = (from c in db1.Contacts
join u in db1.Users
on c.RecordID equals u.Id
into a
from b in a.DefaultIfEmpty(new Models.Users())
where c.RecordType == "USR"
&& b.Lastname.Contains(name)
&& b.Active == 1
select new
{
b.Id,
b.FirstName,
b.Lastname,
b.FullName,
b.Contact
}).ToList();
任何有关我出错的地方的帮助将不胜感激。
谢谢,亚当
解决方案
您可以在不使用 join 关键字的情况下在 linq 中进行连接。我将以下构造用于左连接并且没有任何问题。
var query3 = (from c in db1.Contacts
from u in db1.Users.Where(x => c.RecordID == x.Id).DefaultIfEmpty()
where (c.RecordType == "USR")
&& u.Lastname.Contains(name) && (u.Active == 1)
select new
{
u.Id,
u.FirstName,
u.Lastname,
u.FullName,
u.Contact
}).ToList();
推荐阅读
- python - 无论如何用openpyxl的公式刷新所有单元格?
- javascript - 检查数据是否等于 Firebase 上的某个值
- binary - 这是下溢的情况吗?
- sql - 在 R 中查询撇号
- swift - 围绕特定节点环绕 Scenekit 摄像机
- npm - 在 CentOS 7 上运行大炮(使用 npm)失败
- javascript - 在javascript中比较一维数组和多维数组
- css - css后台在服务器中找不到文件
- angular - 运行“ng build --prod”时出现“./src/polyfills.ts 中的错误”
- php - Facebook InsightsPresets 未找到