LinqDataSource.Where Eigenschaft

Definition

Ruft einen Wert ab, der die Bedingungen angibt, die erfüllt sein müssen, damit ein Datensatz in die angerufenen Daten einbezogen wird.

public:
 property System::String ^ Where { System::String ^ get(); void set(System::String ^ value); };
public string Where { get; set; }
member this.Where : string with get, set
Public Property Where As String

Eigenschaftswert

String

Eine Zeichenfolge, die zum Erstellen der Where-Klausel verwendet wird.

Implementiert

Beispiele

Im folgenden Beispiel wird gezeigt, wie die von einer Abfrage zurückgegebenen Daten basierend auf einer statischen Bedingung gefiltert werden.

<asp:LinqDataSource 
    ContextTypeName="ExampleDataContext" 
    TableName="Products" 
    Where="Price > 50"
    ID="LinqDataSource1" 
    runat="server">
</asp:LinqDataSource>
<asp:GridView 
    DataSourceID="LinqDataSource1"
    ID="GridView1" 
    runat="server">
</asp:GridView>
<asp:LinqDataSource 
    ContextTypeName="ExampleDataContext" 
    TableName="Products" 
    Where="Price > 50"
    ID="LinqDataSource1" 
    runat="server">
</asp:LinqDataSource>
<asp:GridView 
    DataSourceID="LinqDataSource1"
    ID="GridView1" 
    runat="server">
</asp:GridView>

Das folgende Beispiel zeigt, wie Sie die Daten basierend auf einem Wert filtern, der vom Benutzer zur Laufzeit bereitgestellt wird. In diesem Beispiel wird ein DropDownList Steuerelement und ein GridView Steuerelement auf der Seite angezeigt. Wenn der Benutzer einen der Werte im DropDownList Steuerelement auswählt, wählt das LinqDataSource Steuerelement aus der Products Tabelle nur Zeilen aus, die Werte aufweisen, UserPrice die dem ausgewählten Wert entsprechen. Das GridView Steuerelement zeigt dann die gefilterten Daten an.

<asp:DropDownList AutoPostBack="true" ID="DropDownList1" runat="server">
    <asp:ListItem Value="0"></asp:ListItem>
    <asp:ListItem Value="25"></asp:ListItem>
    <asp:ListItem Value="100"></asp:ListItem>
    <asp:ListItem Value="400"></asp:ListItem>
</asp:DropDownList>
<asp:LinqDataSource 
    ContextTypeName="ExampleDataContext" 
    TableName="Products" 
    Where="Price>@UserPrice"
    ID="LinqDataSource1" 
    runat="server">
    <WhereParameters>
        <asp:ControlParameter 
            Name="UserPrice" 
            DefaultValue="0" 
            ControlID="DropDownList1" 
            Type="Int32" />
    </WhereParameters>
</asp:LinqDataSource>
<asp:GridView 
    DataSourceID="LinqDataSource1"
    ID="GridView1" 
    runat="server">
</asp:GridView>
<asp:DropDownList AutoPostBack="true" ID="DropDownList1" runat="server">
    <asp:ListItem Value="0"></asp:ListItem>
    <asp:ListItem Value="25"></asp:ListItem>
    <asp:ListItem Value="100"></asp:ListItem>
    <asp:ListItem Value="400"></asp:ListItem>
</asp:DropDownList>
<asp:LinqDataSource 
    ContextTypeName="ExampleDataContext" 
    TableName="Products" 
    Where="Price > @UserPrice"
    ID="LinqDataSource1" 
    runat="server">
    <WhereParameters>
        <asp:ControlParameter 
            Name="UserPrice" 
            DefaultValue="0" 
            ControlID="DropDownList1" 
            Type="Int32" />
    </WhereParameters>
</asp:LinqDataSource>
<asp:GridView 
    DataSourceID="LinqDataSource1"
    ID="GridView1" 
    runat="server">
</asp:GridView>

Hinweise

Sie verwenden die Where Eigenschaft, um die Bedingungen für den Datensatz anzugeben, der von einer Abfrage zurückgegeben werden soll. Die Syntax für die Where Eigenschaft entspricht der Syntax für eine LINQ Where-Klausel in C#.

Sie geben einen Ausdruck an, der zu einem booleschen Wert führt, und wenn der Ausdruck true für eine bestimmte Zeile ausgewertet wird, wird die Zeile im Resultset enthalten. Ausdrücke bestehen aus Spaltennamen, Vergleichsoperatoren und Zu vergleichenden Werten, wie im folgenden Beispiel gezeigt:

<asp:LinqDataSource ... Where="Price > 50"...>  

Um mehrere Ausdrücke anzugeben, die mit logischen AND oder OR Operatoren verknüpft sind, verwenden && Sie als logischer AND-Operator und || als logischer OR-Operator, wie im folgenden Beispiel gezeigt:

<asp:LinqDataSource ... Where="Price > 50 && Price < 100"...>  
<asp:LinqDataSource ... Where="Price <= 50 || Price >= 100"...>  

Wenn Sie eine Eigenschaft mit einem Literalzeichenfolgenwert testen möchten, muss der Literalzeichenfolgenwert in doppelte Anführungszeichen eingeschlossen werden. Um dies in Markup zu tun, schließen Sie den Where Klauselwert in einfache Anführungszeichen ein, wie im folgenden Beispiel gezeigt:

<asp:LinqDataSource ... Where='Category = "Sports"' ... >  

Verwenden Sie Zum Testen eines Literalzeichenfolgenwerts im Code Escapezeichen, die für die Sprache geeignet sind, die Sie verwenden, um doppelte Anführungszeichen einzufügen, wie im folgenden Beispiel gezeigt:

LinqDataSource1.Where = "Category = ""Sports"""  
LinqDataSource1.Where = "Category = \"Sports\"";  

Wenn Sie testen möchten, ob eine Zeichenfolge größer oder kleiner als eine andere Zeichenfolge ist, müssen Sie Methoden der String Klasse anstelle von Operatoren zwischen dem Spaltennamen und dem Zeichenfolgenwert verwenden < > . In den folgenden Beispielen wird gezeigt, wie Zeilen mit Kategoriewerten ausgewählt werden, die kleiner als, kleiner oder gleich sind, größer als oder größer als oder gleich "Sport" sind:

<asp:LinqDataSource ... Where='Category.CompareTo("Sports") < 0' ... >  
<asp:LinqDataSource ... Where='Category.CompareTo("Sports") <= 0' ... >  
<asp:LinqDataSource ... Where='Category.CompareTo("Sports") > 0' ... >  
<asp:LinqDataSource ... Where='Category.CompareTo("Sports") >= 0' ... >  

Sie können auch andere Methoden der String Klasse verwenden, z StartsWith. B. , EndsWith, und Contains. Weitere Informationen zum Vergleichen von Zeichenfolgen finden Sie unter Vergleich von Zeichenfolgen. Weitere Informationen zur Syntax von Where-Klauseln finden Sie unter "C#-Operatoren " und "where"-Klausel.

Zusätzlich zum Filtern basierend auf statischen Werten, die Sie beim Erstellen der Webseite definieren, können Sie basierend auf dynamischen Werten filtern, die zur Laufzeit ausgewertet werden. In diesem Fall fügen Sie einen benannten Parameter in die Eigenschaft ein, die Where als Platzhalter für den Wert fungiert. Anschließend fügen Sie einen Parameter hinzu, der den übereinstimmenden Namen der WhereParameters Auflistung enthält.

Alternativ können Sie die Eigenschaft true auf die AutoGenerateWhereClause Parameter in der WhereParameters Auflistung festlegen und definieren. Wenn die AutoGenerateWhereClause Eigenschaft lautet true, müssen Sie die benannten Parameter nicht in die Where Eigenschaft einschließen. Stattdessen generiert das LinqDataSource Steuerelement automatisch die Where-Klausel aus den Parametern in der WhereParameters Eigenschaft.

Weitere Informationen zum Filtern von Daten finden Sie unter Walkthrough: Auswählen und Filtern einer Teilmenge von Daten mit den LinqDataSource- und GridView-Steuerelementen.

Gilt für