首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >3个表之间的连接

3个表之间的连接
EN

Stack Overflow用户
提问于 2019-04-22 20:46:54
回答 2查看 104关注 0票数 0

我有3个表User,HumanCustomer,CompanyCustomer我想使用LINQ表之间的连接,但我的查询不起作用,它返回null

查询:

代码语言:javascript
复制
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,因为当我删除

代码语言:javascript
复制
join cCustomer in _ctx.CompanyCustomers  on users.Id equals cCustomer.UserId

查询运行正确。

EN

回答 2

Stack Overflow用户

发布于 2019-04-23 06:13:16

也许您的问题是您试图迭代的动态变量。

您可以尝试:

代码语言:javascript
复制
foreach (dynamic item in query)

或者,通过将查询的开头更新为以下内容,编写类来保存要选择的值:

代码语言:javascript
复制
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
                     });
票数 0
EN

Stack Overflow用户

发布于 2019-04-22 21:43:35

代码语言:javascript
复制
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)
                         });
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55794675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档