أين هو "اضعاف" LINQ تمديد الطريقة؟
-
22-07-2019 - |
سؤال
ولقد وجدت في عينات ينق MSDN في طريقة أنيق يسمى أضعاف () التي أريد استخدام. على سبيل المثال:
double[] doubles = { 1.7, 2.3, 1.9, 4.1, 2.9 };
double product =
doubles.Fold((runningProduct, nextFactor) => runningProduct * nextFactor);
ولسوء الحظ، لا أستطيع الحصول على هذا جمع، سواء في المثال أو في التعليمات البرمجية الخاصة بي، وأنا لا يمكن أن تجد في أي مكان آخر في MSDN (مثل أساليب الإرشاد Enumerable أو صفيف) أن أذكر هذا الأسلوب. الخطأ أحصل هو العمر سهل "لا أعرف شيئا عن ذلك" الخطأ:
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?)
وأنا باستخدام أساليب أخرى التي أعتقد أنها تأتي من ينق (مثل تحديد () وأين ())، وأنا "باستخدام System.Linq"، لذلك أعتقد أن كل شيء موافق.
هل هذه الطريقة موجودة حقا في C # 3.5، وإذا كان الأمر كذلك، ماذا أفعل الخطأ؟
المحلول
وسوف ترغب في استخدام طريقة تمديد Aggregate
:
double product = doubles.Aggregate(1.0, (prod, next) => prod * next);
MSDN للحصول على مزيد من المعلومات. فإنه يتيح لك تحديد seed
ثم تعبير لحساب القيم المتعاقبة.
لا تنتمي إلى StackOverflow