List<PaymentType> paymentOptions = _PaymentMethods;
_PaymentMethods
является публичным свойством, и я хотел бы отфильтровать его копию и сохранить в переменной paymentOptions
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;
}