List<PaymentType> paymentOptions = _PaymentMethods;
_PaymentMethods
는 공공 재산이며, 나는 그것의 사본을 필터링하고 변수 paymentOptions
필터 IList의 <T>
List<Int32> noInvoice = new List<Int32>(){ 16, 4 , 6 };
foreach (PaymentType pt in paymentOptions)
{
if(noInvoice.Contains(pt.Id))
{
paymentOptions.Remove(pt);
break;
}
}
에 저장하고 싶습니다 그러나이에게 두 번째로 실행하면, 변수 _PaymentMethods
에는 더 이상 제거 된 항목이 없습니다.
값 대신 참조로 이동하는 것 같습니다 ... 배열로 목록을 복사하는 것을 선호하지 않습니다. Linq를 사용해야합니까, 아니면 다른 방법이 있습니까?
편집 : 지금이 있습니다
List<PaymentType> paymentOptions = ShopController.CurrentShop.PaymentMethods;
List<PaymentType> paymentOptionsFiltered = new List<PaymentType>();
if (haveToFilter)
{
List<Int32> noInvoice = new List<Int32>() { 16, 4, 6 };
foreach (PaymentType pt in paymentOptions)
{
if (!noInvoice.Contains(pt.Id))
{
paymentOptionsFiltered.Add(pt);
}
}
repeaterPaymentOptions.DataSource = paymentOptionsFiltered;
}
else
{
repeaterPaymentOptions.DataSource = paymentOptions;
}
당신을 수행 'noInvoice'리스트와 일치하는 것들을 모두 제거하기를 원한다. 코드 에서처럼? –
당신은 맞습니다 Martinho,하지만 나는 한 번에 세 가지 중 하나가 발생합니다 알아요. 그래서'Remove' 또는'RemoveAll'은 모두 괜찮습니다. 하지만이 방법은 필터링되지 않은'_PaymentMethods'도 변경합니다. –