#c_sharp #linq
Допустим у меня есть массив List> first_mas, на котором я провожу выборку List
result = new List (); result = first_mas.Where(d => d[0] == "1").First(); Если допустим я потом в result удалю несколько элементов, то и в исходном first_mas удалятся эти элементы. Как я понимаю это из-за того что result содержит ссылку на first_mas или дело в другом? Можно как то указать чтобы результат был самостоятельным массивом (без ссылки на исходный)? Или только вручную создавать промежуточный и копировать туда?
Ответы
Ответ 1
Where лишь фильтрует исходных список. Логично, что результат ссылается на оригинал. Можно как то указать чтобы результат был самостоятельным массивом (без ссылки на исходный)? Например, так: Listresult = first_mas.Where(d => d[0] == "1").First().ToList(); Или: List result = new List (first_mas.Where(d => d[0] == "1").First()); Ответ 2
Потому что List< T> - ссылочный тип, и ссылка, указывающая на result, ссылается на соответствующий элемент списка first_mas
Комментариев нет:
Отправить комментарий