"폴드"LINQ 확장 방법은 어디에 있습니까?
-
22-07-2019 - |
문제
나는 발견했다 MSDN의 LINQ 샘플 내가 사용하려는 폴드 ()이라는 깔끔한 방법. Their example:
double[] doubles = { 1.7, 2.3, 1.9, 4.1, 2.9 };
double product =
doubles.Fold((runningProduct, nextFactor) => runningProduct * nextFactor);
불행히도, 나는 그들의 예제 또는 내 코드에서 이것을 컴파일 할 수 없으며,이 방법을 언급하는 MSDN (열거 가능 또는 배열 확장 메소드)의 다른 곳에서는 찾을 수 없습니다. 내가 얻는 오류는 평범한 오래된 "그에 대해 아무것도 모른다"오류입니다.
error CS1061: 'System.Array' does not contain a definition for 'Fold' and no
extension method 'Fold' accepting a first argument of type 'System.Array' could
be found (are you missing a using directive or an assembly reference?)
LINQ (예 : Select () 및 Where ())에서 나온 다른 방법을 사용하고 있으며 "System.Linq를 사용하고 있습니다"라고 생각합니다.
이 방법은 실제로 C# 3.5에 존재합니까? 그렇다면 내가 무엇을 잘못하고 있습니까?
해결책
당신은 사용하고 싶을 것입니다 Aggregate
확장 방법 :
double product = doubles.Aggregate(1.0, (prod, next) => prod * next);
보다 MSDN 자세한 내용은. a를 지정할 수 있습니다 seed
그런 다음 연속적인 값을 계산하는 표현식.
제휴하지 않습니다 StackOverflow