展平复杂模型
本文关键字:模型 复杂 | 更新日期: 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)});