Нет места для оптимизации, ваш цикл довольно прост и понятен.
Одна вещь, которую я хотел бы улучшить - кэширование значения Request.Param
вместо двухкратного обращения к нему:
(это можно переписать с использованием LINQ, чтобы оно выглядело более элегантно, но не быстрее)
public List<int> getValues(List<Obj> myList)
{
List<Obj> listQuatity = new List<Obj>();
foreach (Obj item in myList)
{
// access it once so code would be slightly faster
// but much clear
var requestParam = Request.Params["codControl" + item.ID].Trim();
listQuatity.Add(new Obj
{
ID = item.ID,
Quantity = requestParam.Equals(String.Empty)
? 0
: Convert.ToInt32(requestParam)
});
}
}
Посмотрим, как будет выглядеть запрос LINQ:
List<Obj> listQuatity =
myList.Select(i => new {
Id = i.ID,
Param = Request.Params["codControl" + item.ID].Trim(),
})
.Select(i => new Obj {
ID = i.Id,
Quantity = Param.Equals(String.Empty)
? 0
: Convert.ToInt32(i.Param)
})
.ToList();