【发布时间】:2019-04-22 12:46:53
【问题描述】:
我有 3 个表 User,HumanCustomer,CompanyCustomer 我想用 LINQ 在表之间加入,但我的查询不起作用并且它返回 null
查询:
var query = (from users in _ctx.Users
join hCustomer in _ctx.HumanCustomers on users.Id equals hCustomer.UserId
join cCustomer in _ctx.CompanyCustomers on users.Id equals cCustomer.UserId
select new
{
users.Id,
users.Mobile,
hCustomer.LastName,
hCustomer.Name,
cCustomer.CompanyName
});
foreach (var item in query)
{
AllCustomerViewModel allCustomer = new AllCustomerViewModel();
if (item.Name != null)
{
allCustomer.UserId = item.Id;
allCustomer.FullName = item.Name + item.LastName;
allCustomer.Mobile = item.Mobile;
Customer.Add(allCustomer);
}
}
代码没有进入foreach
我认为问题在于使用 UserId 两次,因为当我删除时
join cCustomer in _ctx.CompanyCustomers on users.Id equals cCustomer.UserId
查询运行正确。
【问题讨论】:
-
不确定数据,但是是的,您可能需要使用用户表两次,但别名不同
-
如何使用? @布拉德
-
可能是您的 CompanyCustomers 表为空,或者“UserId”列的值为空。可以查吗?
-
当您在 sql 编辑器中编写该查询时会发生什么?可能某些字段为空,因此结果为空。
-
检查表中的数据,确保所有 3 个表都包含相同的 UserId 值