2012-02-14 38 views
5

Sum पुन: उपयोग करने की कोशिश की हल नहीं कर सकता लेकिन यह त्रुटि आई:विधि योग

cannot resolve method Sum

कैसे मैं अपने वाक्य रचना

private static void AggregatesData(User user) 
     { 
      user.TotalActiveUsers = SumToolbarsData(user.bars,(tb => tb.ActiveUsers)); 

      user.TotalInstalls = SumToolbarsData(user.bars, (tb => tb.Installs)); 

      user.TotalBalance = SumToolbarsData(user.bars, (tb => tb.Balance)); 
     } 

     private static T SumToolbarsData<T>(List<Bar> bars, Func<Bar, T> selector) 
     { 
      return bars.Sum<T>(selector); 
     } 
बदल सकते हैं

उत्तर

6

LINQ प्रदान नहीं करता है, बॉक्स, के जेनेरिक वर्जन से बाहर Sum, इस कारण से भाषा और रनटाइम (dynamic से पहले) जेनेरिक (<T>) मानों को जोड़ने की अनुमति नहीं देता है; INumber इंटरफ़ेस नहीं है, और भाषा जेनेरिक प्रकारों (<T>) पर ऑपरेटरों (+) का समर्थन नहीं करती है। या तो भार के कि लेने के लिए स्विच Func<T, float>, Func<T, int>, आदि - या MiscUtil पुस्तकालय जो एक सामान्य Sum<T> कार्यान्वयन, विशेष रूप से शामिल है का उपयोग करें:

public static TSource Sum<TSource>(this IEnumerable<TSource> source); 
public static TValue Sum<TSource, TValue>(this IEnumerable<TSource> source, 
         Func<TSource,TValue> selector); 

जो यह + ऑपरेटर को हल करने, और कुछ धुआं का उपयोग करके करता है और दर्पण (ताकि यह धीमा न हो, आदि)।

संबंधित मुद्दे