展平复杂模型

本文关键字:模型 复杂 | 更新日期: 2023-09-27 18:33:17

我有一个嵌套对象,其结构如下:模型 A 包含模型 B 的列表。我想知道是否有一种快速的方法来使其变平。

例:

public class Customer
{
public int ID {get; set;}
public string Name {get; set;}
public List<int> OrderNumber { get; set; }
}

这给了我一个只有订单号的扁平列表

var list = customerList.Select(x => new { x.ID, x.Name, x.OrderNumber}).Where(x => x.OrderNumber!= null).SelectMany(s => s.OrderNumber).ToList();

这给了我一个客户信息列表,其中包含每个客户记录的订单号列表

var list = customerList.Select(x => new { x.ID, x.Name, x.OrderNumber}).ToList();

我正在寻找一种快速的方法,以字符串形式返回一长串扁平化的客户信息列表。像这样的东西...

编号---名称----订单号

123约翰多伊1,2,3

564简多伊1,2

我觉得使用 LINQ SelectMany 可以完成这项工作,但不确定如何正确完成。如上所示,我得到了我想要的结果,我只需要一种方法将其放在一个语句中。我知道我可以做一个循环并构建一个新列表来获得我想要的东西。这不是世界末日,但我想了解有关 LINQ 的更多信息。任何提示将不胜感激。谢谢。

展平复杂模型

我总是发现这种事情在查询语法中更容易,试试这个:

var query = from cust in customerList
            from orderNo in cust.OrderNumber
            select new { cust.ID, cust.Name, OrderNumber = orderNo };

更新

根据您的评论,如果您只想将订单号作为最后一列的逗号分隔字符串,您可以执行以下操作:

var query = customerList.Select(x => new{ x.ID, x.Name, OrderNos = string.Join(",", x.OrderNumber)});