0

我有一段代码如下 -

    var serviceResponseItems = new List<ServiceResponseItems>();
    foreach (var item in serviceResponse.SomeItems.Where(x => !string.IsNullOrEmpty(x.Id) && x.Id.Trim().Length > 0).ToList())
            {
                var responseViewItem = new ResponseViewItem
                {
                    Description = item.ItemDescriptionCode.Trim(),
                    SummaryActivityDate = item.SummaryActivityDate
                };

                if (!string.IsNullOrWhiteSpace(item.Amount))
                {
                    responseViewItem.Amount = Convert.ToDouble(item.Amount.Trim());
                }

                serviceResponseItems.Add(responseViewItem);
            }
        }

如您所见,foreach 循环源是一个 lambda 表达式。我正在尝试找出可以提高整个应用程序代码质量的领域。

有人可以建议这种 foreach 循环在性能/质量/标准方面是否实际上更好。

IMO,对此的替代方法可能是声明一个存储 lambda 表达式结果的变量并将该变量用作 foreach 声明的一部分。

请建议。

4

1 回答 1

1

在性能方面,在 foreach 语句中包含表达式不会受到任何影响。lambda 表达式只会在循环开始时计算一次。

在质量方面,在我看来,将表达式放在 foreach 语句之外更具可读性。这也使得迭代哪些项目更加清晰。例如:

var itemsWithValidIds = serviceResponse.SomeItems.Where(x => !string.IsNullOrEmpty(x.Id) &&
                                                        x.Id.Trim().Length > 0);
foreach (var item in itemsWithValidIds)
        {
        ...
于 2013-05-16T17:17:40.593 回答