2016-06-10 17 views
0

Ich habe folgende csv DatenBerechnen Sie den Prozentsatz aus einer Liste?

2,1,3,5,0 3,1,3,20,0 4,1,6,200,1000

Ich habe Probleme, den Prozentsatz effizient Berechnung . Hier ist, was ich bisher habe:

var csvParser = new CsvParser(); 
var customers = csvParser.ParseCsv(@"data.csv"); 

var results = from c in customers 
       let total = customers.Sum(x => x.Stake) 
       let totalWin = customers.Sum(x => x.Win) 
       group c by new 
       { 
        Id=c.Id, 
        Stake=c.Stake, 
        Win=c.Win, 
       } into history 
       select new 
       { 
        Id = history.Key.id, 
        percentage = (float)history.Count()/(float)e.Key.total 
       }; 

return results; 
+1

Welche Probleme haben Sie speziell? –

+1

Ich stecke bei der Berechnung des Prozentsatzes nach der gegebenen Geschäftsregel fest –

+1

Erhalten Sie den falschen Prozentsatz? oder ein Fehler? –

Antwort

2

Sie sind weit über komplizieren es. Ich gehe davon aus, dass Sie das Pfahlkram gemischt haben, weil dies Teil einer anderen Abfrage war, auch die Let's sind völlig unnötig.

Sie müssen nur nach der ID gruppieren und dann die group.Count (von Win) durch die group.Count() teilen, um den Gewinn zu erhalten.

var cheaters = customers.GroupBy(c => c.Id) 
    .Select(g => new 
    { 
      Id= g.Key, 
      Percentage = g.Count(c => c.Win > 0)/(double)g.Count() 
      // feel free to aggreate other values here like g.Sum(x => x.Stake) 
    }) 
    .Where(c => c.Percentage >= .6); 
Verwandte Themen