簡體   English   中英

如何優化 C# 中的嵌套 foreach 循環

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM