(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

Queryable.SingleOrDefault<TSource>-Methode (IQueryable<TSource>, Expression<Func<TSource, Boolean>>)

Gibt das einzige Element einer Sequenz zurück, das eine angegebene Bedingung erfüllt, oder einen Standardwert, wenn kein solches Element vorhanden ist. Diese Methode löst eine Ausnahme aus, wenn mehrere Elemente die Bedingung erfüllen.

Namespace:  System.Linq
Assembly:  System.Core (in System.Core.dll)

public static TSource SingleOrDefault<TSource>(
	this IQueryable<TSource> source,
	Expression<Func<TSource, bool>> predicate
)

Typparameter

TSource

Der Typ der Elemente von source.

Parameter

source
Typ: System.Linq.IQueryable<TSource>
Ein IQueryable<T>, aus dem ein einzelnes Element zurückgegeben werden soll.
predicate
Typ: System.Linq.Expressions.Expression<Func<TSource, Boolean>>
Eine Funktion zum Überprüfen eines Elements auf eine Bedingung.

Rückgabewert

Typ: TSource
Das einzige Element der Eingabesequenz, das die Bedingung in predicate erfüllt, oder default(TSource), wenn ein solches Element nicht gefunden wird.

Hinweis zur Verwendung

In Visual Basic und C# können Sie diese Methode als Instanzenmethode für ein beliebiges Objekt vom Typ IQueryable<TSource> aufrufen. Bei Verwendung der Syntax für Instanzenmethoden lassen Sie den ersten Parameter aus. Weitere Informationen finden Sie unter Erweiterungsmethoden (Visual Basic) und Erweiterungsmethoden (C#-Programmierhandbuch).

AusnahmeBedingung
ArgumentNullException

source oder predicate ist null.

InvalidOperationException

Die Bedingung in predicate wird von mehreren Elementen erfüllt

Diese Methode verfügt über mindestens einen Parameter vom Typ Expression<TDelegate>, dessen Typargument einer der Func<T, TResult>-Typen ist. Für diese Parameter können Sie einen Lambda-Ausdruck übergeben, und dieser wird zu einer Expression<TDelegate> kompiliert.

Die SingleOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource, Boolean>>)-Methode generiert einen MethodCallExpression, der den Aufruf von SingleOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource, Boolean>>) durch sich selbst als konstruierte generische Methode darstellt. Anschließend übergibt sie die MethodCallExpression an die Execute<TResult>(Expression)-Methode des IQueryProvider, der von der Provider-Eigenschaft des source-Parameters dargestellt wird.

Das Abfrageverhalten, das durch das Ausführen einer Ausdrucksbaumstruktur auftritt, die einen Aufruf von SingleOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource, Boolean>>) darstellt, hängt von der Implementierung des Typs des source-Parameters ab. Es wird erwartet, dass das einzige Element in source zurückgegeben wird, das die in predicate angegebene Bedingung erfüllt, oder ein Standardwert, wenn kein solches Element vorhanden ist.

Im folgenden Codebeispiel wird veranschaulicht, wie Sie mit SingleOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource, Boolean>>) das einzige Element eines Arrays auswählen, das eine Bedingung erfüllt. Die zweite Abfrage veranschaulicht, dass SingleOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource, Boolean>>) einen Standardwert zurückgibt, wenn die Sequenz nicht genau ein Element enthält, das die Bedingung erfüllt.


            string[] fruits = { "apple", "banana", "mango", 
                                  "orange", "passionfruit", "grape" };

            // Get the single string in the array whose length is greater
            // than 10, or else the default value for type string (null).
            string fruit1 =
                fruits.AsQueryable().SingleOrDefault(fruit => fruit.Length > 10);
            Console.WriteLine("First Query: " + fruit1);

            // Get the single string in the array whose length is greater
            // than 15, or else the default value for type string (null).
            string fruit2 =
               fruits.AsQueryable().SingleOrDefault(fruit => fruit.Length > 15);
            Console.WriteLine("Second Query: " +
                (String.IsNullOrEmpty(fruit2) ? "No such string!" : fruit2));

            /*
                This code produces the following output:

                First Query: passionfruit
                Second Query: No such string!
            */



.NET Framework

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4, 3.5

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Portable Klassenbibliothek

Unterstützt in: Portable Klassenbibliothek

.NET für Windows Store-Apps

Unterstützt in: Windows 8

.NET für Windows Phone-Apps

Unterstützt in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft