좋아, 배송 된 모든 상품을 가져 와서 배송 상품이 목록에없는 경우 목록에 추가하려고합니다. 그러나 배송 물품이 목록에있는 경우 목록에있는 두 품목을 결합하고 싶습니다. 여기 nopcommerce 배송 상품 목록에서 집계 방법을 사용하는 C#
내가 함께 일하고 있어요 코드입니다 :이 두 변수의var shippedItems = _orderService.GetOrderById(shipment.OrderId).Shipments.Where(x => x.ShippedDateUtc != null && x.OrderId == shipment.OrderId && x.Id != shipment.Id).ToList();
List<ShipmentItem> shipmentItemsList = new List<ShipmentItem>();
for (int i = 0; i <= shippedItems.Count - 1; i++)
{
var si = shippedItems[i];
var sii = si.ShipmentItems.ToList();
foreach (var item in sii)
{
if (!shipmentItemsList.Contains(item))
{
shipmentItemsList.Add(item);
}
else
{
var foundId = shipmentItemsList.Select(x => x.Id == item.Id);
shipmentItemsList.Aggregate((foundId, item) => foundId + item);
}
}
}
(foundId, item)
내가 오류를 얻을 :
the variable name
라는 이름의 지역 변수는이 때문에 범위에 선언 할 수 없습니다
이름은 둘러싼 로컬 범위에서 로컬 또는 매개 변수를 정의하는 데 사용됩니다.
UPDATE 다음을 시도해 볼 수 있다고 생각했지만 결과에 합류하지 않았습니다.
if (i == 0)
{
shipmentItemsList = si.ShipmentItems.ToList();
}
else
{
shipmentItemsList.Concat(si.ShipmentItems.ToList());
}
누구나 올바른 길을 가르쳐 줄 수 있습니다.
환호
이유를 당신이 컴파일러 오류가 있어요 foundId 때문에 당신이 그것을 사용하려고 시도하는 위의 라인에 선언되었습니다. 그러나 더 큰 문제는 Aggregate 함수를 사용하여 Id (int maybe?)와 ShipmentItem을 결합하고 Aggregate가 동일한 유형의 인수에서 작동하는 것입니다. 또한 유형에 대한 사용자 정의 추가 연산자를 정의하지 않았 음을 추측합니다. 잠시 후 "else"를 치기를 원할 때 데이터가 어떻게 보이는지, 완료되면 어떻게 보이는지 이야기 해 봅시다. 거기에서 우리는 코드를 말할 수 있습니다. –
@KyleBurns 도움을 주셔서 감사합니다. :) 그래, 맞아. 기본적으로 주문이 들어 오면 많은 품목을 가질 수 있지만 모든 품목은 한 배송에 배송되지 않을 수 있습니다. 따라서 여러 번 발송해야합니다. 그래서 각 품목을 반복 할 수 있도록 모든 선적 품목을 가져오고 싶지만 한 품목이 두 개의 shippments (하나의 수량 2, 다른 수량 3)를 통해 운송 된 경우 항목이 분리되어 하나의 항목이됩니다 5 양. 이것에 대한 새로운 지식의 종류는 그것에 대해 어떻게 가야할지 모르겠다 : / –