Verwenden der Summenmethode in LINQ

7

Ich versuche, die Werte in einer generischen Sammlung zusammenzufassen , ich habe den gleichen genauen Code verwendet, um diese Funktion in anderen Teilen meines Codes auszuführen, aber es scheint ein Problem mit dem zu haben ulong Datentyp?

Der Code

%Vor%

hat den folgenden Fehler:

  

Fehler 15 Der Aufruf ist zwischen den folgenden Methoden oder Eigenschaften nicht eindeutig: ' System.Linq.Enumerable.Sum<System.Collections.Generic.KeyValuePair<int,ulong>>(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<int,ulong>>, System.Func<System.Collections.Generic.KeyValuePair<int,ulong>,float>) ' und ' System.Linq.Enumerable.Sum<System.Collections.Generic.KeyValuePair<int,ulong>>(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<int,ulong>>, System.Func<System.Collections.Generic.KeyValuePair<int,ulong>,decimal?> )

%Vor%     
lakedoo 09.01.2014, 18:56
quelle

2 Antworten

16

Sum() hat keine Überladung, die ein ulong zurückgibt, und der Compiler kann nicht entscheiden, welche der Überladungen zum Aufruf vorhanden sind.

Sie können ihm bei der Besetzung helfen:

%Vor%     
SLaks 09.01.2014, 18:59
quelle
8

Vereinbart mit Sum() hat keine Überladung, die ulong zurückgibt, und der Compiler kann nicht entscheiden, welche der Überladungen zum Aufruf vorhanden ist. Wenn Sie jedoch zu lange spielen, können Sie auf System.OverflowException: Arithmetic operation resulted in an overflow.

stoßen

Stattdessen könnten Sie eine Erweiterungsmethode wie folgt erstellen:

%Vor%

Auf diese Weise müssen Sie sich keine Gedanken über das Casting machen und es verwendet den nativen Datentyp addition.

    
jb1t 05.01.2016 01:11
quelle

Tags und Links