2つのリストアイテムを1つのアイテムに連結します

クリス

productIdに基づいてリストアイテムを連結しようとしていますJSONの命名についてお詫びします。私はそれが最善ではないことを知っています、私はこれを制御できません。

リスト内のアイテムが同じproductIdを持っている場合、それらを連結して、変数プロパティ(costTypefeeIdfeeNameなど)を含むfees配列を使用して1つのアイテムを作成します(目的の結果を参照)。productIdが同じ場合、branchName、branchId、productName、およびbundleはすべて同じ値になります。

[{
        "branchname": "Branch",
        "branchid": "b7d79617-1c36-4be1-87b7-d7a910a5b72e",
        "productid": "d029d731-92a6-4bd3-b020-1ad282af8308",
        "productname": "Local Search",
        "bundle": false,
        "costtype": "Cost",
        "feeid": "c3d5fb93-f8be-4be2-b5b8-dd1701614e05",
        "feename": "Fee",
        "discounttype": null,
        "discountamount": null,
        "baseprice": 20,
        "grossprice": 20,
        "vatrate": 20,
        "vatamount": 4,
        "netprice": 24
    }, {
        "branchname": "Branch",
        "branchid": "b7d79617-1c36-4be1-87b7-d7a910a5b72e",
        "productid": "d029d731-92a6-4bd3-b020-1ad282af8308",
        "productname": "Local Search",
        "bundle": false,
        "costtype": "Sale",
        "feeid": "7299a1fe-fe3d-43e2-b21a-3710e1bcd720",
        "feename": "Standard Product Fee",
        "discounttype": null,
        "discountamount": null,
        "baseprice": 60,
        "grossprice": 60,
        "vatrate": 20,
        "vatamount": 12,
        "netprice": 72
    }
]

望ましい結果:

[{
        "branchname": "Branch",
        "branchid": "b7d79617-1c36-4be1-87b7-d7a910a5b72e",
        "productid": "d029d731-92a6-4bd3-b020-1ad282af8308",
        "productname": "Local Search",
        "bundle": false,
        "fees": [{
                "costtype": "Cost",
                "feeid": "c3d5fb93-f8be-4be2-b5b8-dd1701614e05",
                "feename": "Fee",
                "discounttype": null,
                "discountamount": null,
                "baseprice": 20,
                "grossprice": 20,
                "vatrate": 20,
                "vatamount": 4,
                "netprice": 24
            }, {
                "costtype": "Sale",
                "feeid": "7299a1fe-fe3d-43e2-b21a-3710e1bcd720",
                "feename": "Standard Product Fee",
                "discounttype": null,
                "discountamount": null,
                "baseprice": 60,
                "grossprice": 60,
                "vatrate": 20,
                "vatamount": 12,
                "netprice": 72
            }
        ]
    }
]

productIdでグループ化しようとlist.GroupBy(g => g.ProductId)しましたが、次に何をすべきかわかりません。可能であれば、エレガントなLINQソリューションを探しています。

ブライアンロジャース

このクエリを使用して、リストを新しい形式に変換できます。

var condensed = 
    list.GroupBy(p => p.ProductId)
        .Select(g => 
        {
            var first = g.First();
            return new
            {
                first.BranchName,
                first.BranchId,
                first.ProductId,
                first.ProductName,
                first.Bundle,
                fees = g.Select(p => new
                {
                    p.CostType,
                    p.FeeId,
                    p.FeeName,
                    p.DiscountType,
                    p.DiscountAmount,
                    p.BasePrice,
                    p.GrossPrice,
                    p.VatRate,
                    p.VatAmount,
                    p.NetPrice
                })
                .ToList()
            };
        })
        .ToList();

これが実際のデモです:https//dotnetfiddle.net/tweKHY

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Pythonでリスト内の2つのアイテムを連結します

一度に1つのアイテムのアイテムのリストを作成します

list.count()は、2つある場合にリスト内の1つのアイテムを示します

Pythonの新しいリストに1つのリストの2つのアイテムを追加する

CSSは1行に4つのリストアイテムを取得します

リストを繰り返し、1つのアイテムに戻ります

リストアイテムに配列を追加します(1つは1つのペアリングです)

pandasとmatplotlib:2つのプロットを1つの凡例アイテムに結合します

各アイテムの発生率を最大に保つ2つの配列を連結します

Python:2つの既知のアイテム間のリストからアイテムを取得します

dictのリストを1つのdictにマージし、アイテムをリストに追加します

1つのリストに1つのアイテムしか含まれていない2つのリストを圧縮する方法

アイテムのリストをスクレイピングし、それを1つのプロパティに結合します

CSSテキストは1つのラインアイテムに対して2行を模倣します

1つのリストアイテム内に2つのテキスト値を表示する

リスト内包表記:各アイテムに対して2つ以上のアイテムを返す

リスト内包表記:各アイテムに対して2つ以上のアイテムを返す

sqlはリストから1つのアイテムを選択します

jsonは辞書アイテムを1つの辞書を持つリストに変更します

Postgres-2つの列を1つのアイテムに集約します

2つのリストに存在するアイテムを数えます

2つのアイテムごとに混合レイアウトのリストアイテムをフラッターします

2つのリストに基づいてアイテムのリストを生成しますか?

2つのリストボックスのアイテムを3番目のリストボックスに結合します

リストビューは、2番目のアイテムを追加した後、1つのアイテムのみを表示します

1つのリストから辞書を作成し、最初のアイテムを2番目のアイテムにマップし、3番目のアイテムを4番目のアイテムにマップする方法など。

タイムスパンリストのすべてのアイテムを1つのタイムスパンにカウントします

Hibernate-リスト内で一度に1つのアイテムをコミットします(失敗したアイテムは無視します)

特定のテキストを含むアイテムが見つかるまで、リスト内のアイテムを結合しますか?

TOP 一覧

  1. 1

    モーダルダイアログを自動的に閉じる-サーバーコードが完了したら、Googleスプレッドシートのダイアログを閉じます

  2. 2

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  3. 3

    CSSのみを使用して三角形のアニメーションを作成する方法

  4. 4

    ドロップダウンリストで選択したアイテムのQComboBoxスタイル

  5. 5

    ZScalerと証明書の問題により、Dockerを使用できません

  6. 6

    PyCharmリモートインタープリターはプロジェクトタブにサイトパッケージのコンテンツを表示しません

  7. 7

    Windows 10でのUSB入力デバイスの挿入/取り外しの検出

  8. 8

    Excel - count multiple words per cell in a range of cells

  9. 9

    PictureBoxで画像のブレンドを無効にする

  10. 10

    Windows 10 Pro 1709を1803、1809、または1903に更新しますか?

  11. 11

    スタート画面にシャットダウンタイルを追加するにはどうすればよいですか?

  12. 12

    Python / SciPyのピーク検出アルゴリズム

  13. 13

    Luaの文字列から特定の特殊文字を削除するにはどうすればよいですか?

  14. 14

    Pythonを使用して、リストからデータを読み取り、特定の値をElasticsearchにインデックス付けするにはどうすればよいですか?

  15. 15

    LinuxでPySide2(Qt for Python)をインストールするQt Designerはどこにありますか?

  16. 16

    goormIDEは、ターミナルがロードするデフォルトプロジェクトを変更します

  17. 17

    QGISとPostGIS(マップポイント(米国の地図上にraduisを使用した緯度と経度)

  18. 18

    MLでのデータ前処理の背後にある直感

  19. 19

    ターミナルから「入力ソースの変更」ショートカットを設定する

  20. 20

    パンダは異なる名前の列に追加します

  21. 21

    同じクラスの異なるバージョンを使用したクラスローディング:java.lang.LinkageError:名前の重複クラス定義を試行しました

ホットタグ

アーカイブ