LinqDataSource.Where Eigenschap

Definitie

Hiermee haalt u een waarde op die aangeeft welke voorwaarden waar moeten zijn voor een record die moet worden opgenomen in de opgehaalde gegevens.

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

Waarde van eigenschap

Een tekenreeks die wordt gebruikt om de Where-component te maken.

Implementeringen

Voorbeelden

In het volgende voorbeeld ziet u hoe u de gegevens filtert die worden geretourneerd uit een query op basis van een statische voorwaarde.

<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>

In het volgende voorbeeld ziet u hoe u de gegevens filtert op basis van een waarde die de gebruiker tijdens runtime heeft opgegeven. In dit voorbeeld worden een DropDownList besturingselement en een GridView besturingselement weergegeven op de pagina. Wanneer de gebruiker een van de waarden in het DropDownList besturingselement selecteert, selecteert het LinqDataSource besturingselement alleen in de Products tabel rijen met waarden die UserPrice gelijk zijn aan de geselecteerde waarde. Het GridView besturingselement geeft vervolgens de gefilterde gegevens weer.

<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>

Opmerkingen

U gebruikt de Where eigenschap om de voorwaarden op te geven voor de record die moet worden geretourneerd vanuit een query. De syntaxis voor de Where eigenschap is hetzelfde als de syntaxis voor een LINQ Where-component in C#.

U geeft een expressie op die resulteert in een Booleaanse waarde en als de expressie resulteert true in een bepaalde rij, wordt de rij opgenomen in de resultatenset. Expressies bestaan uit kolomnamen, vergelijkingsoperatoren en waarden om mee te vergelijken, zoals wordt weergegeven in het volgende voorbeeld:

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

Als u meerdere expressies wilt opgeven die zijn gekoppeld door logische AND of OR operators, gebruikt && u als logische AND-operator en || als logische OR-operator, zoals wordt weergegeven in het volgende voorbeeld:

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

Als u een eigenschap wilt testen op basis van een letterlijke tekenreekswaarde, moet de letterlijke tekenreekswaarde tussen dubbele aanhalingstekens worden geplaatst. Als u dit wilt doen in markeringen, plaatst u de Where componentwaarde tussen enkele aanhalingstekens, zoals wordt weergegeven in het volgende voorbeeld:

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

Als u wilt testen op basis van een letterlijke tekenreekswaarde in code, gebruikt u escapetekens die geschikt zijn voor de taal die u gebruikt om dubbele aanhalingstekens in te voegen, zoals wordt weergegeven in het volgende voorbeeld:

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

Als u wilt testen of een tekenreeks groter is dan of kleiner is dan een andere tekenreeks, moet u methoden van de String klasse gebruiken in plaats van operatoren < tussen de kolomnaam en de tekenreekswaarde te gebruiken>. In de volgende voorbeelden ziet u hoe u rijen selecteert met categoriewaarden die kleiner zijn dan, kleiner dan of gelijk aan, groter dan of groter dan of gelijk aan "Sport":

<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' ... >

U kunt ook andere methoden van de String klasse gebruiken, zoals StartsWith, EndsWithen Contains. Zie Tekenreeksen vergelijken voor meer informatie over het vergelijken van tekenreeksen. Zie C#-operators en where-component voor meer informatie over de syntaxis van where-componenten.

Naast filteren op basis van statische waarden die u definieert wanneer u de webpagina maakt, kunt u filteren op basis van dynamische waarden die tijdens runtime worden geëvalueerd. In dat geval neemt u een benoemde parameter op in de Where eigenschap die fungeert als tijdelijke aanduiding voor de waarde. Vervolgens voegt u een parameter met de overeenkomende naam toe aan de WhereParameters verzameling.

U kunt de AutoGenerateWhereClause eigenschap true ook instellen en de parameters in de WhereParameters verzameling definiëren. Wanneer de AutoGenerateWhereClause eigenschap is true, hoeft u de benoemde parameters niet op te nemen in de Where eigenschap. In plaats daarvan genereert het LinqDataSource besturingselement automatisch de Where-component van de parameters in de WhereParameters eigenschap.

Zie Walkthrough: Een subset van gegevens selecteren en filteren met de besturingselementen LinqDataSource en GridView voor meer informatie over het filteren van gegevens.

Van toepassing op