繁体   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