Resharper说我可以,但我看不出怎么做。 该表单有几个示例:
foreach (ItemType Item in ListOfItems)
if (ConditionalInvolvingItem)
Total += ItemProperty;
当然,我可以在条件上创建一个子列表,然后对子列表中的项目求和,但这不会更清楚,并且运行速度会更慢。
ReSharper 是一个方便的工具,但请记住,它的建议不一定总是更高性能或不言自明。这里的情况就是这样。这真的是一个折腾。我相信您已经想到了一个 LINQ 语句,但我想这个例子看起来像这样:
var Total = (from Item in ListOfItems
where (ConditionalInvolvingItem)
select ItemProperty).Sum();
var total = listOfItems
.Where(item => ConditionalInvolvingItem(item))
.Sum(item => item.Property);