Max899 (25.05.2014)
-
23.05.2014, 18:00 #1
- Registriert seit
- 23.04.2014
- Beiträge
- 21
Thanked 5 Times in 3 PostsLinq Unterschied zwischen First und FirstOrDefault?
Hallo, ich habe heute angefangen mir Linq in C# anzuschauen. Verstehe aber nicht so richtig wo der Unterschied zwischen First und FirstOrDefault ist.
-
23.05.2014, 22:54 #2
AW: Linq Unterschied zwischen First und FirstOrDefault?
First wirft eine Exception, wenn nichts gefunden wurde, Default gibt NULL zurück wenn nichts gefunden wurde.
Kannst du auch einfach selbst nachstellen:
class Program
{
static void Main(string[] args)
{
List<string> list = new List<string>() { "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "ß", "w", "e", "r" };
string x = null;
try
{
x = list.FirstOrDefault(y => y == "lol");
Console.WriteLine(
"Wert von x ist:" +
(x == null ? "NULL" : x.ToString())
);
x = list.First(y => y == "lol");
Console.WriteLine(
"Wert von x ist:" +
(x == null ? "NULL" : x.ToString())
);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
Console.ReadLine();
}
}
Java:
Spoiler:
Lustige Quotes:
Spoiler:
-
The Following User Says Thank You to Sky.NET For This Useful Post:
-
26.05.2014, 11:23 #3
- Registriert seit
- 19.11.2011
- Beiträge
- 2.128
Thanked 1.936 Times in 1.180 PostsAW: Linq Unterschied zwischen First und FirstOrDefault?
Gibt Default nicht den Datentyp zurück, mit dem gerade hantiert wird?
-
The Following 2 Users Say Thank You to !lkay For This Useful Post:
KingofRapx3 (01.06.2014)
-
26.05.2014, 12:01 #4Gelöschter BenutzerGast
AW: Linq Unterschied zwischen First und FirstOrDefault?
@NightMareG:
Vollkommen richtig, FirstOrDefault() gibt default(T) zurück, wenn kein Element gefunden wurde. Wenn wir zum Beispiel eine List haben die nur Integers hat und wir nach einem Element suchen, das nicht existiert, wird 0 zurück geben, weil default(int) == 0 ist.
int v1 = TestList.Where (o => o == 5).FirstOrDefault ();
Console.WriteLine (v1.ToString ()); // --> 0
Das Codebeispiel von Sky macht wenig Sinn, weil er zwei mal dieselbe Variable (string x) nimmt und nach dem First() Test nicht zurück auf "null" setzt.
Um also zu überprüfen um wir was in der Liste gefunden haben, sollte man folgendes nutzen:
int v1 = TestList.Where (o => o == 5).FirstOrDefault ();
if(v1 != default(int)) {
//Was gefunden
} else {
//Nichts gefunden
}
Dasselbe geht natürlich auch mit Klassen (PTR):
class TestClass
{
public string Test { get; set; }
public int Number { get; set; }
}
public static void Main (string[] args)
{
List<TestClass> TestList = new List<TestClass> ()
{
new TestClass { Test = "Hi", Number = 3 },
new TestClass { Test = "Test", Number = 61 }
};
TestClass test = TestList.Where(o => o.Test == "Hi").FirstOrDefault();
if (test == default(TestClass))
Console.WriteLine ("Nope!");
}
tl:dr; FirstOrDefault() returned default(T) (wenn kein Element gefunden wurde) und man überprüft mit (ret == default(objectType)) ob es null ist oder nicht.Geändert von Gelöschter Benutzer (26.05.2014 um 14:25 Uhr)
-
The Following 4 Users Say Thank You to Gelöschter Benutzer For This Useful Post:
Benzol (26.05.2014), DMW007 (26.05.2014), KingofRapx3 (01.06.2014), Sky.NET (26.05.2014)
-
26.05.2014, 16:10 #5
AW: Linq Unterschied zwischen First und FirstOrDefault?
Reallife = haste recht, aber reallife würde ich ohnehin nichts mit First machen, sondern FirstOrDefault benutzen wann immer das der Fall zulässt
In diesem Fall = es ist völlig egal was nach diesem Aufruf in Zeile 20 passiert, denn da er das Element nicht findet, schmeißt er eine Exception, auch wenn ich das Element wieder auf null setzen würde.
Nichts desto Trotz hast du mit deiner Erklärung natürlich auch recht und an die Prüfung mit default(T) hab ich nicht gedacht, danke für die Ergänzung.Java:
Spoiler:
Lustige Quotes:
Spoiler:
Ähnliche Themen
-
Unterschied zwischen den Automarken?
Von DiscoDieter im Forum FahrzeugeAntworten: 3Letzter Beitrag: 25.07.2020, 20:39 -
Unterschied zwischen Normalgewicht und Idealgewicht?
Von Jokuu im Forum RealLifeAntworten: 7Letzter Beitrag: 04.04.2014, 19:54 -
Unterschied zwischen Supermarkt und Discounter?
Von Peter90 im Forum RealLifeAntworten: 1Letzter Beitrag: 18.03.2014, 21:11 -
Was ist der Unterschied zwischen != und =!
Von Dose im Forum JavaAntworten: 2Letzter Beitrag: 02.02.2014, 13:46 -
Unterschied zwischen AMD-FX Series und Intel Core i7?
Von Devon im Forum KaufberatungAntworten: 12Letzter Beitrag: 19.06.2012, 00:04
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.