1

我正在从需要使用 Linq To Objects 在中间层转换的数据层获取数据(我不控制应用程序的该层)。我必须使用多个键执行分组操作,然后在非键字段上进行字符串连接。给定下面的数据,我想按 CustomerID 和 Date 分组,并创建一个新结构,其中仅基于键生成单行,非键字段(在本例中为 Item)组合成一个字符串:

    CustomerID  Date         Item
    A          11/1/2001    Bread
    A          11/1/2001        Orange Juice
    A          11/1/2001        Salad Dressing
    B          11/1/2001    Bananas
    C          5/6/2001     Candy
    C          12/8/2005    Candy               


    CustomerID  Date         Item
    A          11/1/2001    Bread
                             Orange Juice
                             Salad Dressing
    B          11/1/2001    Bananas
    C          5/6/2001     Candy
    C          12/8/2005    Candy

这是否可以使用函数式 linq 语法,还是我必须求助于老式的命令式 foreach 语法?

4

2 回答 2

3

或者:

var results = items
  .GroupBy(i => new { i.Date, i.CustomerID })
  .Select(g => new {
    CustomerID = g.Key.CustomerID,
    Date = g.Key.Date,
    Item = string.Join(", ", g.Select(i => i.Item).ToArray())
  });
于 2010-09-13T19:08:54.173 回答
2

像这样的东西?

var result = from item in items
             group item by new { item.Date, item.CustomerID } into g
             select new
             {
                 g.Key.CustomerID,
                 g.Key.Date,
                 Item = string.Join(", ", from i in g select i.Item)
             };
于 2010-09-13T19:00:20.180 回答