entity-framework - LINQ - 加入 3 个表并选择一个包含两个列表的项目
问题描述
我有一个链接到地址和联系人表的公司表。一个公司可以有多个地址和联系人。
我将他们加入 LINQ 并使用 GroupBy 按公司分组,但我不确定如何从中获取地址和联系人列表。我见过的唯一例子只是试图为密钥获取一个列表。
如何编写 Select 以获取具有地址列表和联系人列表的单个公司?
以下是我到目前为止的内容:
var companiesList =
(from company in _context.Company
join address in _context.Address
on company.CompanyId equals address.CompanyId
join contact in _context.Contact
on company.CompanyId equals contact.CompanyId
select new { company, address, contact })
.GroupBy(x => x.company)
.Select(group => new {
Company = group.Key,
Addresses = ??,
Contacts = ??
})
.AsEnumerable();
解决方案
你非常接近答案。您可以使用
group.ToList().Select(c=>c.address),
和
group.ToList().Select(c=>c.contact)
完整示例
var companiesList = (from company in _context.Company
join address in _context.Address
on company.CompanyId equals address.CompanyId
join contact in _context.Contact
on company.CompanyId equals contact.CompanyId
select new { company, address, contact })
.GroupBy(x => x.company)
.Select(group => new {
Company = group.Key,
Addresses = group.ToList().Select(c=>c.address),
Contacts = group.ToList().Select(c=>c.contact)
})
推荐阅读
- math - 弧度 atan2 显示相反的值,然后是它们需要的值
- javascript - 如何将 svg 按钮变成下载按钮?
- javascript - 保存 html 输入并稍后获取文件。这只能通过使用 JS、AJAX、JSON 来实现吗
- pandas - 不能在具有某些“nan”值的列中使用应用函数
- python - 如何在 Python 中忽略字符串中的空格?
- php - 我的 page.php 有问题
- azure - 上传带有 azure 函数的 json 配置文件?
- javascript - 在 Node.js 函数中使用 `replace`
- excel - 运行时错误 1004 应用程序定义或对象定义错误
- reactjs - Redux + Typescript + Jest 测试问题 - 目标容器不是 DOM 元素