我有一个嵌套对象,其结构如下:模型A包含模型B的列表。我想知道是否有一种快速的方法来展平它。
示例:
public class Customer
{
public int ID {get; set;}
public string Name {get; set;}
public List<int> OrderNumber { get; set; }
}
这给了我一个只有OrderNumber
的扁平列表var list = customerList.Select(x => new { x.ID, x.Name, x.OrderNumber}).Where(x => x.OrderNumber!= null).SelectMany(s => s.OrderNumber).ToList();
这给我一个客户信息列表,其中包含每个客户记录的OrderNumber列表
var list = customerList.Select(x => new { x.ID, x.Name, x.OrderNumber}).ToList();
我正在寻找一种快速的方法来返回一个扁平的客户信息列表,并将ordernumber的扁平列表作为字符串。像这样......
ID --- Name ---- OrderNumber
123 JohnDoe 1,2,3
564 JaneDoe 1,2
我觉得使用LINQ SelectMany可以完成这项工作但不确定如何正确完成。如上所示,我得到了我想要的结果,我只需要一种方法将它放在一个声明中。我知道我可以做一个循环并构建一个新列表来获得我想要的东西。它不是世界末日,但我想更多地了解LINQ。任何提示将不胜感激。感谢。
答案 0 :(得分:0)
我总是在查询语法中发现这种事情更容易,试试这个:
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)});