我有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
查询运行正确。
发布于 2019-04-23 06:13:16
也许您的问题是您试图迭代的动态变量。
您可以尝试:
foreach (dynamic item in query)
或者,通过将查询的开头更新为以下内容,编写类来保存要选择的值:
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 MyClass
{
Id = users.Id,
Mobile = users.Mobile,
LastName = hCustomer.LastName,
Name = hCustomer.Name,
CompanyName = cCustomer.CompanyName
});
发布于 2019-04-22 21:43:35
you can try this way..
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
{
Id = users.Id,
Mobile = users.Mobile,
LastName = hCustomer.LastName,
Name = hCustomer.Name,
CompanyName = (cCustomer == null ? "" : cCustomer .CompanyName)
});
https://stackoverflow.com/questions/55794675
复制相似问题