通过具有分组的特定属性从列表中删除另一个列表中的项目

问题描述 投票:0回答:2

我有两个清单

List A (CG300019159, CG300018158, FS300076458)
List B Returns grouped lists like below
     {
            "pallet_identifier": "CG300018158",
            "shipment_items": [
                {
                    "sku": "10366960",
                    "stock_qty": 12,
                    "description": "MOTHERCARE CREAM BABYGROW W/HAT"
                },
                {
                    "sku": "10346788",
                    "stock_qty": 1,
                    "description": "KIT 7PC ESS CREW NECK CARDIGAN SKY BLUE"
                }
    ]
    },
    "pallet_identifier": "CG300018187",
            "shipment_items": [
                {
                    "sku": "10366960",
                    "stock_qty": 12,
                    "description": "MOTHERCARE CREAM BABYGROW W/HAT"
                },
                {
                    "sku": "10346788",
                    "stock_qty": 1,
                    "description": "KIT 7PC ESS CREW NECK CARDIGAN SKY BLUE"
                }
    ]
    },

我想使用属性pallet_identifier从列表B中删除托盘及其内容。

试过如下

entity = new List<GoodInWarehouseBM>((from consighdrs in mi9db.consighdrs
                        join consigdests in mi9db.consigdests on consighdrs.consignment equals consigdests
                            .consignment
                        join consigliness in mi9db.consiglines on consigdests.condestint equals consigliness
                            .condestint
                        join productcodess in mi9db.productcodes on consigliness.varint equals productcodess.varint
                        join products in mi9db.products on productcodess.prodint equals products.prodint
                        where consigdests.destination == storeId && consighdrs.status == "T" && consighdrs.warehouse == "900"
                        group new { consigdests, productcodess, consigliness, products } by consigdests.consignment into grp
                        select new GoodInWarehouseBM
                        {
                            pallet_identifier = grp.Key,
                            shipment_items = grp.Select(a => new GoodInWarehouseBM.ShipmentItems
                            {
                                sku = a.productcodess.variantcode,
                                stock_qty = a.consigliness.issueqty,
                                description = a.products.proddesc

                            }).ToList()

                        }).ToList().RemoveAll(i => !getConsignmentbookedin.Contains(i.pallet_identifier)));
c# .net linq
2个回答
2
投票

你可以尝试使用.Where(i=> getConsignmentbookedin.Any(z=> z != i.pallet_identifier))

entity = new List<GoodInWarehouseBM>((from consighdrs in mi9db.consighdrs
                        join consigdests in mi9db.consigdests on consighdrs.consignment equals consigdests
                            .consignment
                        join consigliness in mi9db.consiglines on consigdests.condestint equals consigliness
                            .condestint
                        join productcodess in mi9db.productcodes on consigliness.varint equals productcodess.varint
                        join products in mi9db.products on productcodess.prodint equals products.prodint
                        where consigdests.destination == storeId && consighdrs.status == "T" && consighdrs.warehouse == "900"
                        group new { consigdests, productcodess, consigliness, products } by consigdests.consignment into grp
                        select new GoodInWarehouseBM
                        {
                            pallet_identifier = grp.Key,
                            shipment_items = grp.Select(a => new GoodInWarehouseBM.ShipmentItems
                            {
                                sku = a.productcodess.variantcode,
                                stock_qty = a.consigliness.issueqty,
                                description = a.products.proddesc

                            }).ToList()

                        }).Where(i=> getConsignmentbookedin.Any(z=> z != i.pallet_identifier)).ToList();

0
投票

您应该在组之前应用过滤器并选择,它会提高您的查询数量,因为您丢弃了不需要的所有内容。

entity = new List<GoodInWarehouseBM>((from consighdrs in mi9db.consighdrs.Where(i=> !getConsignmentbookedin.Contains(i.Id(id of item not sure which one it is))
                        join consigdests in mi9db.consigdests on consighdrs.consignment equals consigdests
                            .consignment
                        join consigliness in mi9db.consiglines on consigdests.condestint equals consigliness
                            .condestint
                        join productcodess in mi9db.productcodes on consigliness.varint equals productcodess.varint
                        join products in mi9db.products on productcodess.prodint equals products.prodint
                        where consigdests.destination == storeId && consighdrs.status == "T" && consighdrs.warehouse == "900"
                        group new { consigdests, productcodess, consigliness, products } by consigdests.consignment into grp
                        select new GoodInWarehouseBM
                        {
                            pallet_identifier = grp.Key,
                            shipment_items = grp.Select(a => new GoodInWarehouseBM.ShipmentItems
                            {
                                sku = a.productcodess.variantcode,
                                stock_qty = a.consigliness.issueqty,
                                description = a.products.proddesc

                            }).ToList()

                        })).ToList();
© www.soinside.com 2019 - 2024. All rights reserved.