2012-02-14 12 views
5

çözmek ama bu hata var olamaz: Ben sözdizimiyöntemi <code>Sum</code> yeniden çalıştı 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); 
     } 
nasıl değiştirebileceğinizi

cannot resolve method Sum

cevap

6
LINQ sağlamaz

, kutu, genel bir sürümü dışına Sum, dil ve çalışma zamanının (dynamic öncesinde) 'un jenerik (<T>) değerlerinin eklenmesine izin vermemesi nedeniyle; INumber arabirimi yoktur ve dil, genel türlerde (<T>) operatörleri (+) desteklemez. Ya almak aşırı geçmek Func<T, float>, Func<T, int>, vs - ya özellikle jenerik Sum<T> uygulanmasını içermez MiscUtil kütüphane kullanımı: Bu + operatörü çözülmesi ve bazı duman kullanarak yapar

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

ve aynalar (böylece yavaş değil, vb).