Autor Beitrag
Vitalic
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 68



BeitragVerfasst: Mo 04.10.10 15:55 
Hallo,


wie kann ich in einer Liste Max bzw. Min bestimmen?
Möchte ungern Schleifen benutzen und dann noch if-Abfragen machen!
Es muss doch eine Methode geben, die das macht?

List<int> myList= new List<int>() { 0, 2, 35, 6, 3, -2 };

...

Gruß, Vitalic
bakachan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Mo 04.10.10 16:02 
Bin mir jetzt nicht ganz sicher ob das bei 3.5 scon vorhanden war oder erst bei 4.0 kam aber wie wärs mit:
1. Möglichkeit
ausblenden C#-Quelltext
1:
int max = myList.Max();					


2. Möglichkeit
Du lässt die Liste sortieren und nimmst dann den ersten und den letzten Wert.

3. Möglichkeit
Du durchläufst 1 mal deine Liste und sucht dir dabei einfach die min und max werte raus.
(das sind ja nur wenige Zeilen)
Vitalic Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 68



BeitragVerfasst: Mo 04.10.10 16:14 
Danke bakachan,

das mit der ersten Möglichkeit habe ich auch davor versucht, hat aber auch nicht funktioniert, vielleicht erst ab 4.0

Habe das mal so gemacht:

int ll = myList.Max(ob => ob);


Gruß, Vitalic
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 04.10.10 17:56 
user profile iconVitalic hat folgendes geschrieben Zum zitierten Posting springen:
das mit der ersten Möglichkeit habe ich auch davor versucht, hat aber auch nicht funktioniert
Sollte es aber, da es exakt äquivalent ist zu Max(x => x) :gruebel: .

_________________
>λ=
Vitalic Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 68



BeitragVerfasst: Mo 04.10.10 18:15 
@ Kha

Stimmt, es klappt doch :)...


Aber wie bekomme ich das Maximum, wenn ich eine Liste in Liste habe?

List<List<Werte>> maxWert = new List<List<Werte>>();

Die Klasse Werte besitzt eine Methode "getWert()"

geht das so?

double max = maxWert.Max(obj1 => (obj2 => obj2.getWert()));



Gruß, Vitalic
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 04.10.10 18:34 
user profile iconVitalic hat folgendes geschrieben Zum zitierten Posting springen:
Die Klasse Werte besitzt eine Methode "getWert()"
Wir sind hier doch nicht bei Java :D .

user profile iconVitalic hat folgendes geschrieben Zum zitierten Posting springen:
geht das so?

double max = maxWert.Max(obj1 => (obj2 => obj2.getWert()));
Kann es sein, dass du mit Lambda-Ausdrücken noch nicht sonderlich viel anfangen kannst ;) ? Solange ich würde ich dann doch lieber weiter mit Schleifen arbeiten. Wie auch immer, mit einem zweiten Max würde es so funktionieren:
ausblenden C#-Quelltext
1:
double max = maxWert.Max(list => list.Max(obj => obj.getWert()));					

_________________
>λ=
Vitalic Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 68



BeitragVerfasst: Mo 04.10.10 23:13 
Danke Kha.

Ja ich habe früher nur mit Java programmiert und muss jetzt auf C# umsteigen.

Vielleicht kurze Frage außerhalb des Themas.

Darf man so Methoden setter und getter in C# schreiben?
Ich meine, es funktioniert ja :)

Und wozu hat man den Datentyp String in klein und groß?

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
        public double getWert()
        {
            return wert;
        }

        public void getWert(double wert)
        {
            this.wert = wert;
        }


Moderiert von user profile iconKha: C#-Tags hinzugefügt
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 04.10.10 23:41 
user profile iconVitalic hat folgendes geschrieben Zum zitierten Posting springen:
Vielleicht kurze Frage außerhalb des Themas.
Eigentlich gilt "Ein Thread, eine Frage", aber wenn ich es schon losgetreten habe :) ...
Erlaubt ist natürlich alles, was funktioniert, aber in einer Sprache, die Properties kennt, wären solche Methoden gelinde gesagt Blödsinn ;) . Und string ist ein Alias für System.String wie es int für System.Int32 ist.

_________________
>λ=