linq
Standardabfrageoperatoren
Suche…
Bemerkungen
Linq - Abfragen werden geschrieben , um die Verwendung von Standard Query - IEnumerable<T>
IQueryable<T>
Operatoren (die eine Reihe von Erweiterungsmethoden, die in erster Linie auf Objekte vom Typ arbeitet IEnumerable<T>
und IQueryable<T>
) oder mit Abfrageausdrücke (die bei der Kompilierung, umgewandelt werden Standardabfrageoperator Methodenaufrufe).
Abfrageoperatoren bieten Abfragefunktionen, einschließlich Filterung, Projektion, Aggregation, Sortierung und mehr.
Verkettungsoperationen
Verkettung bezieht sich auf das Anfügen einer Sequenz an eine andere.
Concat
Verkettet zwei Sequenzen zu einer Sequenz.
Methodensyntax
// Concat
var numbers1 = new int[] { 1, 2, 3 };
var numbers2 = new int[] { 4, 5, 6 };
var numbers = numbers1.Concat(numbers2);
// numbers = { 1, 2, 3, 4, 5, 6 }
Abfragesyntax
// Not applicable.
Filtervorgänge
Das Filtern bezieht sich auf Vorgänge, bei denen die Ergebnismenge auf die Elemente beschränkt wird, die eine bestimmte Bedingung erfüllen.
Woher
Wählt Werte aus, die auf einer Prädikatfunktion basieren.
Methodensyntax
// Where
var numbers = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 };
var evens = numbers.Where(n => n % 2 == 0);
// evens = { 2, 4, 6, 8 }
Abfragesyntax
// where
var numbers = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 };
var odds = from n in numbers
where n % 2 != 0
select n;
// odds = { 1, 3, 5, 7 }
OfType
Wählt Werte aus, abhängig von ihrer Fähigkeit, in einen angegebenen Typ umgewandelt zu werden.
Methodensyntax
// OfType
var numbers = new object[] { 1, "one", 2, "two", 3, "three" };
var strings = numbers.OfType<string>();
// strings = { "one", "two", "three" }
Abfragesyntax
// Not applicable.
Schließen Sie sich dem Betrieb an
Eine Verknüpfung zweier Datenquellen ist die Verknüpfung von Objekten in einer Datenquelle mit Objekten, die ein gemeinsames Attribut in einer anderen Datenquelle gemeinsam nutzen.
Beitreten
Verbindet zwei Sequenzen basierend auf Schlüsselauswahlfunktionen und extrahiert Wertepaare.
Methodensyntax
// Join
class Customer
{
public int Id { get; set; }
public string Name { get; set; }
}
class Order
{
public string Description { get; set; }
public int CustomerId { get; set; }
}
...
var customers = new Customer[]
{
new Customer { Id = 1, Name = "C1" },
new Customer { Id = 2, Name = "C2" },
new Customer { Id = 3, Name = "C3" }
};
var orders = new Order[]
{
new Order { Description = "O1", CustomerId = 1 },
new Order { Description = "O2", CustomerId = 1 },
new Order { Description = "O3", CustomerId = 2 },
new Order { Description = "O4", CustomerId = 3 },
};
var join = customers.Join(orders, c => c.Id, o => o.CustomerId, (c, o) => c.Name + "-" + o.Description);
// join = { "C1-O1", "C1-O2", "C2-O3", "C3-O4" }
Abfragesyntax
// join … in … on … equals …
var join = from c in customers
join o in orders
on c.Id equals o.CustomerId
select o.Description + "-" + c.Name;
// join = { "O1-C1", "O2-C1", "O3-C2", "O4-C3" }
GroupJoin
Verbindet zwei Sequenzen basierend auf Schlüsselauswahlfunktionen und gruppiert die resultierenden Übereinstimmungen für jedes Element.
Methodensyntax
// GroupJoin
var groupJoin = customers.GroupJoin(orders,
c => c.Id,
o => o.CustomerId,
(c, ors) => c.Name + "-" + string.Join(",", ors.Select(o => o.Description)));
// groupJoin = { "C1-O1,O2", "C2-O3", "C3-O4" }
Abfragesyntax
// join … in … on … equals … into …
var groupJoin = from c in customers
join o in orders
on c.Id equals o.CustomerId
into customerOrders
select string.Join(",", customerOrders.Select(o => o.Description)) + "-" + c.Name;
// groupJoin = { "O1,O2-C1", "O3-C2", "O4-C3" }
Postleitzahl
Wendet eine angegebene Funktion auf die entsprechenden Elemente von zwei Sequenzen an und erzeugt eine Sequenz der Ergebnisse.
var numbers = new [] { 1, 2, 3, 4, 5, 6 };
var words = new [] { "one", "two", "three" };
var numbersWithWords =
numbers
.Zip(
words,
(number, word) => new { number, word });
// Results
//| number | word |
//| ------ | ------ |
//| 1 | one |
//| 2 | two |
//| 3 | three |
Projektionsvorgänge
Projektion bezieht sich auf die Operationen zum Umwandeln eines Objekts in eine neue Form.
Wählen
Projiziert Werte, die auf einer Transformationsfunktion basieren.
Methodensyntax
// Select
var numbers = new int[] { 1, 2, 3, 4, 5 };
var strings = numbers.Select(n => n.ToString());
// strings = { "1", "2", "3", "4", "5" }
Abfragesyntax
// select
var numbers = new int[] { 1, 2, 3, 4, 5 };
var strings = from n in numbers
select n.ToString();
// strings = { "1", "2", "3", "4", "5" }
SelectMany
Projiziert Wertfolgen, die auf einer Transformationsfunktion basieren, und glättet sie dann in eine Folge.
Methodensyntax
// SelectMany
class Customer
{
public Order[] Orders { get; set; }
}
class Order
{
public Order(string desc) { Description = desc; }
public string Description { get; set; }
}
...
var customers = new Customer[]
{
new Customer { Orders = new Order[] { new Order("O1"), new Order("O2") } },
new Customer { Orders = new Order[] { new Order("O3") } },
new Customer { Orders = new Order[] { new Order("O4") } },
};
var orders = customers.SelectMany(c => c.Orders);
// orders = { Order("O1"), Order("O3"), Order("O3"), Order("O4") }
Abfragesyntax
// multiples from
var orders = from c in customers
from o in c.Orders
select o;
// orders = { Order("O1"), Order("O3"), Order("O3"), Order("O4") }
Sortiervorgänge
Bei einem Sortiervorgang werden die Elemente einer Sequenz anhand eines oder mehrerer Attribute sortiert.
Sortieren nach
Sortiert die Werte in aufsteigender Reihenfolge.
Methodensyntax
// OrderBy
var numbers = new int[] { 5, 4, 8, 2, 7, 1, 9, 3, 6 };
var ordered = numbers.OrderBy(n => n);
// ordered = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }
Abfragesyntax
// orderby
var numbers = new int[] { 5, 4, 8, 2, 7, 1, 9, 3, 6 };
var ordered = from n in numbers
orderby n
select n;
// ordered = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }
OrderByDescending
Sortiert die Werte in absteigender Reihenfolge.
Methodensyntax
// OrderByDescending
var numbers = new int[] { 5, 4, 8, 2, 7, 1, 9, 3, 6 };
var ordered = numbers.OrderByDescending(n => n);
// ordered = { 9, 8, 7, 6, 5, 4, 3, 2, 1 }
Abfragesyntax
// orderby
var numbers = new int[] { 5, 4, 8, 2, 7, 1, 9, 3, 6 };
var ordered = from n in numbers
orderby n descending
select n;
// ordered = { 9, 8, 7, 6, 5, 4, 3, 2, 1 }
ThenBy
Führt eine sekundäre Sortierung in aufsteigender Reihenfolge durch.
Methodensyntax
// ThenBy
string[] words = { "the", "quick", "brown", "fox", "jumps" };
var ordered = words.OrderBy(w => w.Length).ThenBy(w => w[0]);
// ordered = { "fox", "the", "brown", "jumps", "quick" }
Abfragesyntax
// orderby …, …
string[] words = { "the", "quick", "brown", "fox", "jumps" };
var ordered = from w in words
orderby w.Length, w[0]
select w;
// ordered = { "fox", "the", "brown", "jumps", "quick" }
ThenByDescending
Führt eine sekundäre Sortierung in absteigender Reihenfolge durch.
Methodensyntax
// ThenByDescending
string[] words = { "the", "quick", "brown", "fox", "jumps" };
var ordered = words.OrderBy(w => w[0]).ThenByDescending(w => w.Length);
// ordered = { "brown", "fox", "jumps", "quick", "the" }
Abfragesyntax
// orderby …, … descending
string[] words = { "the", "quick", "brown", "fox", "jumps" };
var ordered = from w in words
orderby w.Length, w[0] descending
select w;
// ordered = { "the", "fox", "quick", "jumps", "brown" }
Umkehren
Kehrt die Reihenfolge der Elemente in einer Sammlung um.
Methodensyntax
// Reverse
var numbers = new int[] { 1, 2, 3, 4, 5 };
var reversed = numbers.Reverse();
// reversed = { 5, 4, 3, 2, 1 }
Abfragesyntax
// Not applicable.
Konvertierungsvorgänge
Konvertierungsvorgänge ändern den Typ der Eingabeobjekte.
AsUnumerable
Gibt die Eingabe zurück, die als IEnumerable eingegeben wurde.
Methodensyntax
// AsEnumerable
int[] numbers = { 1, 2, 3, 4, 5 };
var nums = numbers.AsEnumerable();
// nums: static type is IEnumerable<int>
Abfragesyntax
// Not applicable.
AsQueryable
Konvertiert ein IEnumerable in ein IQueryable.
Methodensyntax
// AsQueryable
int[] numbers = { 1, 2, 3, 4, 5 };
var nums = numbers.AsQueryable();
// nums: static type is IQueryable<int>
Abfragesyntax
// Not applicable.
Besetzung
Wandelt die Elemente einer Sammlung in einen angegebenen Typ um.
Methodensyntax
// Cast
var numbers = new object[] { 1, 2, 3, 4, 5 };
var nums = numbers.Cast<int>();
// nums: static type is IEnumerable<int>
Abfragesyntax
// Use an explicitly typed range variable.
var numbers = new object[] { 1, 2, 3, 4, 5 };
var nums = from int n in numbers select n;
// nums: static type is IEnumerable<int>
OfType
Filtert Werte, abhängig von ihrer Fähigkeit, in einen angegebenen Typ umgewandelt zu werden.
Methodensyntax
// OfType
var objects = new object[] { 1, "one", 2, "two", 3, "three" };
var numbers = objects.OfType<int>();
// nums = { 1, 2, 3 }
Abfragesyntax
// Not applicable.
ToArray
Konvertiert eine Auflistung in ein Array.
Methodensyntax
// ToArray
var numbers = Enumerable.Range(1, 5);
int[] array = numbers.ToArray();
// array = { 1, 2, 3, 4, 5 }
Abfragesyntax
// Not applicable.
Auflisten
Konvertiert eine Sammlung in eine Liste.
Methodensyntax
// ToList
var numbers = Enumerable.Range(1, 5);
List<int> list = numbers.ToList();
// list = { 1, 2, 3, 4, 5 }
Abfragesyntax
// Not applicable.
ToDictionary
Fügt Elemente in ein Wörterbuch ein, das auf einer Tastenauswahlfunktion basiert.
Methodensyntax
// ToDictionary
var numbers = new int[] { 1, 2, 3 };
var dict = numbers.ToDictionary(n => n.ToString());
// dict = { "1" => 1, "2" => 2, "3" => 3 }
Abfragesyntax
// Not applicable.
Aggregationsvorgänge
Aggregationsoperationen berechnen einen einzelnen Wert aus einer Sammlung von Werten.
Aggregat
Führt eine benutzerdefinierte Aggregationsoperation für die Werte einer Auflistung durch.
Methodensyntax
// Aggregate
var numbers = new int[] { 1, 2, 3, 4, 5 };
var product = numbers.Aggregate(1, (acc, n) => acc * n);
// product = 120
Abfragesyntax
// Not applicable.
Durchschnittlich
Berechnet den Durchschnittswert einer Wertesammlung.
Methodensyntax
// Average
var numbers = new int[] { 1, 2, 3, 4, 5 };
var average = numbers.Average();
// average = 3
Abfragesyntax
// Not applicable.
Anzahl
Zählt die Elemente in einer Auflistung, optional nur die Elemente, die eine Prädikatfunktion erfüllen.
Methodensyntax
// Count
var numbers = new int[] { 1, 2, 3, 4, 5 };
int count = numbers.Count(n => n % 2 == 0);
// count = 2
Abfragesyntax
// Not applicable.
LongCount
Zählt die Elemente in einer großen Sammlung, optional nur die Elemente, die eine Prädikatfunktion erfüllen.
Methodensyntax
// LongCount
var numbers = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
long count = numbers.LongCount();
// count = 10
Abfragesyntax
// Not applicable.
Max
Bestimmt den Maximalwert in einer Sammlung. Löst eine Ausnahme aus, wenn die Sammlung leer ist.
Methodensyntax
// Max
var numbers = new int[] { 1, 2, 3, 4, 5 };
var max = numbers.Max();
// max = 5
Abfragesyntax
// Not applicable.
Mindest
Bestimmt den Mindestwert in einer Sammlung. Löst eine Ausnahme aus, wenn die Sammlung leer ist.
Methodensyntax
// Min
var numbers = new int[] { 1, 2, 3, 4, 5 };
var min = numbers.Min();
// min = 1
Abfragesyntax
// Not applicable.
Min- / MaxOrDefault
Im Gegensatz zu anderen LinQ-Erweiterungen haben
Min()
undMax()
ausnahmslos keine Überladung. Deshalb muss dasIEnumerable
vor dem Aufruf vonMin()
oderMax()
aufAny()
geprüft werden.
// Max
var numbers = new int[] { };
var max = numbers.Any() ? numbers.Max() : 0;
// max = 0
Summe
Berechnet die Summe der Werte in einer Sammlung.
Methodensyntax
// Sum
var numbers = new int[] { 1, 2, 3, 4, 5 };
var sum = numbers.Sum();
// sum = 15
Abfragesyntax
// Not applicable.
Quantifizierer-Operationen
Quantifizierungsoperationen geben einen booleschen Wert zurück, der angibt, ob einige oder alle Elemente einer Sequenz eine Bedingung erfüllen.
Alles
Bestimmt, ob alle Elemente in einer Sequenz eine Bedingung erfüllen.
Methodensyntax
// All
var numbers = new int[] { 1, 2, 3, 4, 5 };
bool areLessThan10 = numbers.All(n => n < 10);
// areLessThan10 = true
Abfragesyntax
// Not applicable.
Irgendein
Bestimmt, ob Elemente in einer Sequenz eine Bedingung erfüllen.
Methodensyntax
// Any
var numbers = new int[] { 1, 2, 3, 4, 5 };
bool anyOneIsEven = numbers.Any(n => n % 2 == 0);
// anyOneIsEven = true
Abfragesyntax
// Not applicable.
Enthält
Bestimmt, ob eine Sequenz ein angegebenes Element enthält.
Methodensyntax
// Contains
var numbers = new int[] { 1, 2, 3, 4, 5 };
bool appears = numbers.Contains(10);
// appears = false
Abfragesyntax
// Not applicable.
Gruppieren von Operationen
Gruppieren bezieht sich auf die Vorgänge, bei denen Daten in Gruppen angeordnet werden, sodass die Elemente in jeder Gruppe ein gemeinsames Attribut verwenden.
Gruppiere nach
Gruppiert Elemente mit einem gemeinsamen Attribut.
Methodensyntax
// GroupBy
class Order
{
public string Customer { get; set; }
public string Description { get; set; }
}
...
var orders = new Order[]
{
new Order { Customer = "C1", Description = "O1" },
new Order { Customer = "C2", Description = "O2" },
new Order { Customer = "C3", Description = "O3" },
new Order { Customer = "C1", Description = "O4" },
new Order { Customer = "C1", Description = "O5" },
new Order { Customer = "C3", Description = "O6" },
};
var groups = orders.GroupBy(o => o.Customer);
// groups: { (Key="C1", Values="O1","O4","O5"), (Key="C2", Values="O2"), (Key="C3", Values="O3","O6") }
Abfragesyntax
// group … by
var groups = from o in orders
group o by o.Customer;
// groups: { (Key="C1", Values="O1","O4","O5"), (Key="C2", Values="O2"), (Key="C3", Values="O3","O6") }
Nachschlagen
Fügt Elemente basierend auf einer Schlüsselauswahlfunktion in ein One-to-Many-Wörterbuch ein.
Methodensyntax
// ToLookUp
var ordersByCustomer = orders.ToLookup(o => o.Customer);
// ordersByCustomer = ILookUp<string, Order>
// {
// "C1" => { Order("01"), Order("04"), Order("05") },
// "C2" => { Order("02") },
// "C3" => { Order("03"), Order("06") }
// }
Abfragesyntax
// Not applicable.
Partitionierungsvorgänge
Partitionieren bezieht sich auf das Aufteilen einer Eingabesequenz in zwei Abschnitte, ohne die Elemente neu anzuordnen, und dann einen der Abschnitte zurückzugeben.
Überspringen
Überspringt Elemente bis zu einer angegebenen Position in einer Sequenz.
Methodensyntax
// Skip
var numbers = new int[] { 1, 2, 3, 4, 5 };
var skipped = numbers.Skip(3);
// skipped = { 4, 5 }
Abfragesyntax
// Not applicable.
SkipWährend
Überspringt Elemente basierend auf einer Prädikatsfunktion, bis ein Element die Bedingung nicht erfüllt.
Methodensyntax
// Skip
var numbers = new int[] { 1, 3, 5, 2, 1, 3, 5 };
var skipLeadingOdds = numbers.SkipWhile(n => n % 2 != 0);
// skipLeadingOdds = { 2, 1, 3, 5 }
Abfragesyntax
// Not applicable.
Nehmen
Bringt Elemente an eine bestimmte Position in einer Sequenz.
Methodensyntax
// Take
var numbers = new int[] { 1, 2, 3, 4, 5 };
var taken = numbers.Take(3);
// taken = { 1, 2, 3 }
Abfragesyntax
// Not applicable.
TakeWhile
Verwendet Elemente basierend auf einer Prädikatsfunktion, bis ein Element die Bedingung nicht erfüllt.
Methodensyntax
// TakeWhile
var numbers = new int[] { 1, 3, 5, 2, 1, 3, 5 };
var takeLeadingOdds = numbers.TakeWhile(n => n % 2 != 0);
// takeLeadingOdds = { 1, 3, 5 }
Abfragesyntax
// Not applicable.
Erzeugungsbetrieb
Generierung bezieht sich auf das Erstellen einer neuen Wertefolge.
DefaultIfEmpty
Ersetzt eine leere Sammlung durch eine Singleton-Sammlung mit einem Standardwert.
Methodensyntax
// DefaultIfEmpty
var nums = new int[0];
var numbers = nums.DefaultIfEmpty();
// numbers = { 0 }
Abfragesyntax
// Not applicable.
Leeren
Gibt eine leere Sammlung zurück.
Methodensyntax
// Empty
var empty = Enumerable.Empty<string>();
// empty = IEnumerable<string> { }
Abfragesyntax
// Not applicable.
Angebot
Erzeugt eine Sammlung, die eine Zahlenfolge enthält.
Methodensyntax
// Range
var range = Enumerable.Range(1, 5);
// range = { 1, 2, 3, 4, 5 }
Abfragesyntax
// Not applicable.
Wiederholen
Erzeugt eine Auflistung, die einen wiederholten Wert enthält.
Methodensyntax
// Repeat
var repeats = Enumerable.Repeat("s", 3);
// repeats = { "s", "s", "s" }
Abfragesyntax
// Not applicable.
Operationen einstellen
Mengenoperationen beziehen sich auf Abfrageoperationen, die eine Ergebnismenge erzeugen, die auf dem Vorhandensein oder Fehlen gleichwertiger Elemente in derselben oder in separaten Sammlungen (oder Gruppen) basiert.
Eindeutig
Entfernt doppelte Werte aus einer Sammlung.
Methodensyntax
// Distinct
var numbers = new int[] { 1, 2, 3, 1, 2, 3 };
var distinct = numbers.Distinct();
// distinct = { 1, 2, 3 }
Abfragesyntax
// Not applicable.
Außer
Gibt die eingestellte Differenz zurück, d. H. Die Elemente einer Sammlung, die nicht in einer zweiten Sammlung angezeigt werden.
Methodensyntax
// Except
var numbers1 = new int[] { 1, 2, 3, 4, 5 };
var numbers2 = new int[] { 4, 5, 6, 7, 8 };
var except = numbers1.Except(numbers2);
// except = { 1, 2, 3 }
Abfragesyntax
// Not applicable.
Sich schneiden
Gibt die gesetzte Schnittmenge zurück, d. H. Elemente, die in jeder der zwei Auflistungen angezeigt werden.
Methodensyntax
// Intersect
var numbers1 = new int[] { 1, 2, 3, 4, 5 };
var numbers2 = new int[] { 4, 5, 6, 7, 8 };
var intersect = numbers1.Intersect(numbers2);
// intersect = { 4, 5 }
Abfragesyntax
// Not applicable.
Union
Gibt die Mengenvereinigung zurück, dh eindeutige Elemente, die in einer der beiden Sammlungen angezeigt werden.
Methodensyntax
// Union
var numbers1 = new int[] { 1, 2, 3, 4, 5 };
var numbers2 = new int[] { 4, 5, 6, 7, 8 };
var union = numbers1.Union(numbers2);
// union = { 1, 2, 3, 4, 5, 6, 7, 8 }
Abfragesyntax
// Not applicable.
Gleichstellungsoperationen
Zwei Folgen, deren entsprechende Elemente gleich sind und die gleiche Anzahl von Elementen haben, werden als gleich betrachtet.
SequenceEqual
Bestimmt, ob zwei Sequenzen gleich sind, indem Elemente paarweise verglichen werden.
Methodensyntax
// SequenceEqual
var numbers1 = new int[] { 1, 2, 3, 4, 5 };
var numbers2 = new int[] { 1, 2, 3, 4, 5 };
var equals = numbers1.SequenceEqual(numbers2);
// equals = true
Abfragesyntax
// Not Applicable.
Elementoperationen
Elementoperationen geben ein einzelnes, spezifisches Element aus einer Sequenz zurück.
ElementAt
Gibt das Element an einem angegebenen Index in einer Auflistung zurück.
Methodensyntax
// ElementAt
var strings = new string[] { "zero", "one", "two", "three" };
var str = strings.ElementAt(2);
// str = "two"
Abfragesyntax
// Not Applicable.
ElementAtOrDefault
Gibt das Element an einem angegebenen Index in einer Auflistung oder einen Standardwert zurück, wenn der Index außerhalb des gültigen Bereichs liegt.
Methodensyntax
// ElementAtOrDefault
var strings = new string[] { "zero", "one", "two", "three" };
var str = strings.ElementAtOrDefault(10);
// str = null
Abfragesyntax
// Not Applicable.
Zuerst
Gibt das erste Element einer Sammlung oder das erste Element zurück, das eine Bedingung erfüllt.
Methodensyntax
// First
var numbers = new int[] { 1, 2, 3, 4, 5 };
var first = strings.First();
// first = 1
Abfragesyntax
// Not Applicable.
FirstOrDefault
Gibt das erste Element einer Sammlung oder das erste Element zurück, das eine Bedingung erfüllt. Gibt einen Standardwert zurück, wenn kein solches Element vorhanden ist.
Methodensyntax
// FirstOrDefault
var numbers = new int[] { 1, 2, 3, 4, 5 };
var firstGreaterThanTen = strings.FirstOrDefault(n => n > 10);
// firstGreaterThanTen = 0
Abfragesyntax
// Not Applicable.
Zuletzt
Gibt das letzte Element einer Collection oder das letzte Element zurück, das eine Bedingung erfüllt.
Methodensyntax
// Last
var numbers = new int[] { 1, 2, 3, 4, 5 };
var last = strings.Last();
// last = 5
Abfragesyntax
// Not Applicable.
LastOrDefault
Gibt das letzte Element einer Collection oder das letzte Element zurück, das eine Bedingung erfüllt. Gibt einen Standardwert zurück, wenn kein solches Element vorhanden ist.
Methodensyntax
// LastOrDefault
var numbers = new int[] { 1, 2, 3, 4, 5 };
var lastGreaterThanTen = strings.LastOrDefault(n => n > 10);
// lastGreaterThanTen = 0
Abfragesyntax
// Not Applicable.
Single
Gibt das einzige Element einer Auflistung zurück oder das einzige Element, das eine Bedingung erfüllt.
Methodensyntax
// Single
var numbers = new int[] { 1 };
var single = strings.Single();
// single = 1
Abfragesyntax
// Not Applicable.
SingleOrDefault
Gibt das einzige Element einer Auflistung zurück oder das einzige Element, das eine Bedingung erfüllt. Gibt einen Standardwert zurück, wenn kein solches Element vorhanden ist oder die Auflistung nicht genau ein Element enthält.
Methodensyntax
// SingleOrDefault
var numbers = new int[] { 1, 2, 3, 4, 5 };
var singleGreaterThanFour = strings.SingleOrDefault(n => n > 4);
// singleGreaterThanFour = 5
Abfragesyntax
// Not Applicable.