我如何LINQify这个?

时间:2011-05-14 03:24:50

标签: linq resharper

Resharper说我可以,但我不知道怎么做。有几种形式的例子:

foreach (ItemType Item in ListOfItems)
    if (ConditionalInvolvingItem)
        Total += ItemProperty;

当然,我可以在条件列表上创建一个子列表,然后对子列表中的项目求和,但这样会更清楚,并且会运行得更慢。

2 个答案:

答案 0 :(得分:3)

var total = listOfItems
                .Where(item => ConditionalInvolvingItem(item))
                .Sum(item => item.Property);

答案 1 :(得分:3)

ReSharper是一个方便的工具,但请记住,它的建议并不总是更高效或不言自明。这就是这种情况。这真的是一个折腾。我确定你已经有了一个LINQ语句,但我想这个例子看起来像这样:

var Total = (from Item in ListOfItems
    where (ConditionalInvolvingItem)
    select ItemProperty).Sum();