2017-09-11 3 views
1

Ich habe zusammengeschustert, was ich dachte, wäre eine Lösung zu dem, was ich tun wollte, basierend auf anderen Themen hier zu diesem Thema (eine bestimmte Anzahl von Elementen aus einer Liste) aber ich denke, meine Syntax ist ein wenig von und es erlaubt mir nicht, die Artikel zu summieren, die ich genommen habe. HierDurchschnitt der ersten 3 Einträge aus der Liste mit linq

ist, was ich habe:

public decimal average_of_items_examples(List<Car> cars) 
     { 
      if (cars == null) 
      { 
       return 0; 
      } 
      else if (cars.Count == 0) 
      { 
       return 0; 
      } 
      else 
      { 
       return cars.OrderBy(x => x.SuggestedRetailPrice).Take(3).Average(); 
      } 
     } 

Ich schätze jede mögliche Hilfe und Erklärungen zu schätzen wissen.

EDIT: Sorry, ich habe vergessen hinzuzufügen, warum ich den OrderBy Teil habe. Ich will nur den Durchschnitt der 3 weniger teuren Autos.

HINWEIS: Ich kann den Typ "Dezimal" nicht ändern, da die Übung so geschrieben wurde.

+0

Was versuchen Sie zu durchschnittlich? Der SuggestedRetailPrice? –

+0

Ja. Ich glaube schon, denn das ist der einzige logische Parameter, der ein Dezimalwert ist. – William

+0

Entschuldigung, ich fügte klärende Informationen hinzu, dass ich nur den Durchschnittspreis der 3 billigsten Autos in der Liste haben möchte, daher meine ursprüngliche "OrderBy" – William

Antwort

3

Beide:

cars.OrderBy(x => x.SuggestedRetailPrice).Take(3).Select(z => z.SuggestedRetailPrice).Average(); 

und:

cars.Select(z => z.SuggestedRetailPrice).OrderBy(x => x).Take(3).Average(); 

tun was du brauchst.

Sie sind beide im Grunde gleich.

3
.Average(x => x.SuggestedRetailPrice) 

Sie haben die Eigenschaft, die Sie von bekommen durchschnittlich festlegen möchten, da die Sammlung für Car Objekte

Verwandte Themen