[英]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.