1

Linq To Objectsを使用して中間層で変換する必要があるデータレイヤーからデータを取得しています(アプリケーションのその層を制御していません)。複数のキーを使用してグループ化操作を実行した後、非キーフィールドで文字列を連結する必要があります。以下のデータを前提として、CustomerIDとDateでグループ化し、キーに基づいて1つの行のみが生成され、非キーフィールド(この場合はItem)が1つの文字列に結合される新しい構造を作成します。

    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 に答える