[英]how could I optimize nested foreach loop in C#
如何减少此代码块的执行时间?
public static IEnumerable<ListviewDataViewModel> GetModelsList<T>(this IEnumerable<T> modelsList
, IEnumerable<ListviewColumnViewModel> modelsColumn
, Action<ListviewDataViewModel, T> listVwItemCallback = null) where T : class
{
List<ListviewDataViewModel> listItms = null;
if (modelsColumn == null || !modelsColumn.Any())
return null;
foreach (var d in modelsList)
{
var li = new ListviewDataViewModel();
foreach (var c in modelsColumn)
{
var _col = string.Empty;
var type = d.GetType();
var prp = type.GetProperty(c.ModelProperty);
if (prp != null)
_col = (prp.GetValue(d) ?? "").ToString();
li.ColumnItem.Add(_col);
}
// call the callback if available.
listVwItemCallback?.Invoke(li, d);
if (listItms == null)
listItms = new List<ListviewDataViewModel>();
listItms.Add(li);
}
return listItms;
}
当我在modelList中有数百条记录时,大约需要一分钟才能得到结果。 我想将执行时间减少一半。 有人可以指导我吗?
缓存type.GetProperty(c.ModelProperty);
每列一次,并停止对每一行和每一列使用反射。
一般来说,你应该完全避免反思。 使用从 T4 模板到增量源生成器等工具,有很多更好的方法可以做到这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.