将数据的详细信息分组为一个,价格字段应以分号

时间:2015-05-15 08:39:34

标签: c# .net linq

我有这个要求需要将数据分组到OrderNum中,价格需要合并在一行中用分号分隔,这是由Type确定的。我可以通过迭代结果来做到这一点但是,可能有更好的方法来实现它,尤其是在LINQ中。

var notebooks = new List<NoteBook>
            {
                new NoteBook { Type = 1, Currency = "USD", Price = 1000, OrderNum = "123" },
                new NoteBook { Type = 2, Currency = "USD", Price = 2000, OrderNum = "123" },
                new NoteBook { Type = 0, Currency = "USD", Price = 3000, OrderNum = "456" },
                new NoteBook { Type = 0, Currency = "USD", Price = 4000, OrderNum = "789" },
                new NoteBook { Type = 4, Currency = "USD", Price = 5000, OrderNum = "753" }

            };

            var results = from r in notebooks
                          group r by new { r.OrderNum } into g
                          select new
                              {
                                  Currency = g.First().Currency,
                                  OrderNum = g.First().OrderNum,
                                  Price = ???
                              };

我期待

的结果
Currency OrderNum Price  
USD   123   1000; 2000  
USD   456   3000  
USD   789   4000  
USD   753   5000  

1 个答案:

答案 0 :(得分:3)

在您的说明中不确定如何在此处使用类型,但要形成单个价格线,您可以使用String.Join

Price = String.Join(";", g.Select(x => x.Price))

如果您运行的是早于4.0的.Net版本,请确保将第二个参数转换为数组:

Price = String.Join(";", g.Select(x => x.Price).ToArray())