Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq 我该怎么做?_Linq_Resharper - Fatal编程技术网

Linq 我该怎么做?

Linq 我该怎么做?,linq,resharper,Linq,Resharper,Resharper说我可以,但我不知道怎么做。该表格有几个示例: foreach (ItemType Item in ListOfItems) if (ConditionalInvolvingItem) Total += ItemProperty; 当然,我可以在条件列表上创建一个子列表,然后对子列表中的项目求和,但这样做不会更清晰,而且会运行得更慢。ReSharper是一个方便的工具,但请记住,它的建议并不总是更有效或更容易解释。这里就是这样。这真是个难题。我相信您已

Resharper说我可以,但我不知道怎么做。该表格有几个示例:

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

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

ReSharper是一个方便的工具,但请记住,它的建议并不总是更有效或更容易解释。这里就是这样。这真是个难题。我相信您已经想到了LINQ语句,但我可以想象这个示例是这样的:

var total = listOfItems
                .Where(item => ConditionalInvolvingItem(item))
                .Sum(item => item.Property);
var Total = (from Item in ListOfItems
    where (ConditionalInvolvingItem)
    select ItemProperty).Sum();

+1.严肃的问题:乍一看,哪一个更容易理解?我不会抱怨代码评审中的
foreach
,但这不是问题所在。Linq版本更能表达你的意图,但你用的是你的电话。你们两人似乎同时回答了基本相同的问题。由于你的分数是他分数的100倍,我给了他一个公认的答案,因为我不能接受你们两个。我还记得,如果你不处理非数字类型,你需要使用聚合而不是求和,并提供你自己的累加器函数。为了便于阅读,请记住这一点。谢谢。现在我知道我错过了什么。但resharper也会为您将其转换为linq。。。。只需使用altenter。