Performance 如果我们在foreach循环中使用lambda表达式,会不会出现性能或质量问题?

Performance 如果我们在foreach循环中使用lambda表达式,会不会出现性能或质量问题?,performance,linq,coding-style,lambda,Performance,Linq,Coding Style,Lambda,我有一段代码如下- var serviceResponseItems = new List<ServiceResponseItems>(); foreach (var item in serviceResponse.SomeItems.Where(x => !string.IsNullOrEmpty(x.Id) && x.Id.Trim().Length > 0).ToList()) {

我有一段代码如下-

    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);
            }
        }
var servicesponseItems=new List();
foreach(servicesponse.SomeItems.Where(x=>!string.IsNullOrEmpty(x.Id)&&x.Id.Trim().Length>0.ToList()中的var项)
{
var responseViewItem=新的responseViewItem
{
Description=item.ItemDescriptionCode.Trim(),
SummaryActivityDate=item.SummaryActivityDate
};
如果(!string.IsNullOrWhiteSpace(item.Amount))
{
responseViewItem.Amount=Convert.ToDouble(item.Amount.Trim());
}
serviceResponseItems.Add(responseViewItem);
}
}
如您所见,foreach循环源是一个lambda表达式。我试图找出在整个应用程序中提高代码质量的地方

有人能建议这种foreach循环在性能/质量/标准方面是否真的更好吗

在我看来,另一种方法是声明一个存储lambda表达式结果的变量,并将该变量用作foreach声明的一部分


请建议。

就性能而言,在foreach语句中使用该表达式不会受到惩罚。lambda表达式将仅在循环开始时计算一次

就质量而言,在我看来,在foreach语句之外使用表达式更具可读性。这也使得迭代哪些项变得更加清晰。例如:

var itemsWithValidIds = serviceResponse.SomeItems.Where(x => !string.IsNullOrEmpty(x.Id) &&
                                                        x.Id.Trim().Length > 0);
foreach (var item in itemsWithValidIds)
        {
        ...

我也期待着同样的结果,但不确定。谢谢你的澄清。