我有两个列表
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)));
答案 0 :(得分: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();
答案 1 :(得分: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();