我的代码工作正常,但我想知道你是否可以建议更具性能的东西来获取动态控件的值。
public class Obj
{
public int ID { get; set; }
public int Quantity { get; set; }
public List<int> getValues (List<Obj> myList)
{
List<Obj> listQuatity = new List<Obj>();
foreach (Obj item in myList)
{
listQuatity.Add(new Obj
{
ID = item.ID,
Quantity = Request.Params["codControl" + item.ID].Trim().Equals("")
? 0
: Convert.ToInt32(Request.Params["codControl" + item.ID])
});
}
}
}
答案 0 :(得分:2)
没有太多优化空间,您的循环非常简单明了。
我会改进一件事 - 缓存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();