[英]Linq - Duplication of records by their collection
Lets say my model looks something like this. 可以说我的模型看起来像这样。
public class OrganizationDTO
{
public int Id { get; set; }
public string Name { get; set; }
public List<StorageDTO> Storages { get; set; } = new List<StorageDTO>();
}
public class StorageDTO
{
public int Id { get; set; }
public string Name { get; set; }
public List<OrganizationDTO> Organizations { get; set; } = new List<OrganizationDTO>();
}
Organization may have multiple storages, so basically I want to duplicate organization per storage in my table. 组织可能有多个存储,因此基本上我想在表中为每个存储复制组织。 I want to show in table records like below
我想在表格记录中显示如下
Organization1 | 组织1 | Storage1
储存1
Organization1 | 组织1 | Storage2
存储2
Organization1 | 组织1 | Storage3
储存3
Organization1 | 组织1 | Storage4
收纳4
Organization2 | 组织2 | Storage1
储存1
Organization2 | 组织2 | Storage2
存储2
I tried to group them by Storage collection but it didnt duplicate my records like I want. 我试图按存储集合对它们进行分组,但是它并没有像我想要的那样重复我的记录。
var result = Context.Storages
.SelectMany(org => org.Organizations)
.GroupBy(org => org)
.Select(grouping => grouping.FirstOrDefault())
.OrderBy(org => org.Name)
.ProjectTo<SomeDTO>();
Looks like you just want to flatten the relationship. 看来您只是想平整关系。
var query =
from storage in Context.Storages
from org in storage.Organizations
select new {Storage = storage, Organization = org };
var result = query
.OrderBy(row => row.Organization.Name)
.ProjectTo<SomeDTO>();
var result = Context.Organizations
.SelectMany(organizationDTO =>organizationDTO
.Storages
.Select(storage =>
new {organizationDTO, storage}));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.