簡體   English   中英

Linq-通過收集來重復記錄

[英]Linq - Duplication of records by their collection

可以說我的模型看起來像這樣。

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>();
}

組織可能有多個存儲,因此基本上我想在表中為每個存儲復制組織。 我想在表格記錄中顯示如下

組織1 | 儲存1

組織1 | 存儲2

組織1 | 儲存3

組織1 | 收納4

組織2 | 儲存1

組織2 | 存儲2

我試圖按存儲集合對它們進行分組,但是它並沒有像我想要的那樣重復我的記錄。

 var result = Context.Storages
    .SelectMany(org => org.Organizations)
    .GroupBy(org => org)
    .Select(grouping => grouping.FirstOrDefault())
    .OrderBy(org => org.Name)
    .ProjectTo<SomeDTO>();

看來您只是想平整關系。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM