Как изменить список в C#?
Как мне сделать изменение списка? Мне нужно отдавать в конечном итоге исходных список и изменённый.
Я подумал, что это должно выполняться следующим образом:
public IReadOnlyList<SpanDto> ConvertSpans(ref List<SpanDto> spanDtos, UnitSystem unitSystem)
{
foreach (var spanDto in spanDtos)
{
if (unitSystem == UnitSystem.Metric)
{
spanDto.Length /= 3.28084;
spanDto.NoLoading.Sag /= 3.28084;
spanDto.NoLoading.SpanPercent = spanDto.NoLoading.Sag / spanDto.Length;
spanDto.NoLoading.Tension *= 4.448222 / 1000;
spanDto.AtLoading.Sag /= 3.28084;
spanDto.AtLoading.SpanPercent = spanDto.AtLoading.Sag / spanDto.Length * 100;
spanDto.AtLoading.HSag /= 3.28084;
spanDto.AtLoading.VSag /= 3.28084;
spanDto.AtLoading.Tension *= 4.448222 / 1000;
}
}
return spanDtos;
}
По итогу мне возвращается как изменённых одинаковых списка
Ответы (2 шт):
Автор решения: tonysdev
→ Ссылка
Можете использовать метод CopyTo для того, чтобы копировать ваш исходный список в тот, с которым вы будете работать.
Автор решения: CrazyElf
→ Ссылка
Примерно так это должно выглядеть, насколько я понял ваш вопрос:
public IReadOnlyList<SpanDto> ConvertSpans(List<SpanDto> spanDtos, UnitSystem unitSystem)
{
ret = new List<SpanDto>();
foreach (var spanDto in spanDtos)
{
var item = new SpanDto();
// тут заполняете поля теми данными, которые не меняются
// ...
if (unitSystem == UnitSystem.Metric)
{
// тут заполняете изменяющиеся поля
// с использованием данных из spanDto
// ...
}
ret.Add(item);
}
return ret;
}
Исходный список есть у тех, кто его передал как параметр. А новый список вы вернёте из функции.