Sdílet prostřednictvím


LinqDataSource.Where Vlastnost

Definice

Získá nebo nastaví hodnotu, která určuje, jaké podmínky musí být pravdivé pro záznam, který se má zahrnout do načtených dat.

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

Hodnota vlastnosti

String

Řetězec, který se používá k vytvoření klauzule Where.

Implementuje

Příklady

Následující příklad ukazuje, jak filtrovat data vrácená z dotazu na základě statické podmínky.

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

Následující příklad ukazuje, jak filtrovat data na základě hodnoty poskytované uživatelem za běhu. V tomto příkladu se DropDownList na stránce zobrazí ovládací prvek a GridView ovládací prvek. Když uživatel vybere jednu z hodnot v ovládacím DropDownList prvku, LinqDataSource ovládací prvek vybere z Products tabulky pouze řádky, které mají UserPrice hodnoty rovnající se vybrané hodnotě. Ovládací GridView prvek pak zobrazí filtrovaná data.

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

Poznámky

Vlastnost použijete Where k určení podmínek pro záznam, který se má vrátit z dotazu. Syntaxe vlastnosti Where je stejná jako syntaxe klauzule LINQ Where v jazyce C#.

Zadáte výraz, který má za následek logickou hodnotu a pokud se výraz vyhodnotí jako true pro daný řádek, je řádek zahrnut do sady výsledků. Výrazy se skládají z názvů sloupců, relačních operátorů a hodnot k porovnání, jak je znázorněno v následujícím příkladu:

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

Pokud chcete zadat více výrazů propojených logickými operátory nebo OR operátory, použijete && ho jako logický AND operátor AND a || jako logický operátor OR, jak je znázorněno v následujícím příkladu:

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

Pokud chcete testovat vlastnost na řetězcové hodnotě literálu, musí být hodnota literálového řetězce uzavřena do dvojitých uvozovek. Chcete-li to provést v kódu, uzavřete hodnotu klauzule Where do jednoduchých uvozovek, jak je znázorněno v následujícím příkladu:

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

Chcete-li otestovat hodnotu literálového řetězce v kódu, použijte řídicí znaky, které jsou vhodné pro jazyk, který používáte k vložení dvojitých uvozovek, jak je znázorněno v následujícím příkladu:

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

Pokud chcete otestovat, zda je řetězec větší nebo menší než jiný řetězec, je nutné použít metody String třídy místo použití < nebo > operátory mezi názvem sloupce a řetězcovou hodnotou. Následující příklady ukazují, jak vybrat řádky s hodnotami Kategorie, které jsou menší než, menší nebo rovno, větší než nebo větší než nebo rovny "Sports":

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

Můžete také použít jiné metody String třídy, například StartsWith, EndsWitha Contains. Další informace o tom, jak porovnávat řetězce, naleznete v tématu Porovnání řetězců. Další informace o syntaxi klauzule Where naleznete v tématu Operátory jazyka C# a klauzule where.

Kromě filtrování na základě statických hodnot, které definujete při vytváření webové stránky, můžete filtrovat na základě dynamických hodnot, které se vyhodnocují za běhu. V takovém případě zahrnete do vlastnosti pojmenovaný parametr Where , který funguje jako zástupný symbol pro hodnotu. Pak přidáte parametr, který má odpovídající název kolekce WhereParameters .

Alternativně můžete vlastnost true nastavit AutoGenerateWhereClause a definovat parametry v kolekciWhereParameters. AutoGenerateWhereClause Pokud je truetato vlastnost , nemusíte do vlastnosti zahrnout pojmenované parametryWhere. LinqDataSource Místo toho ovládací prvek automaticky vygeneruje klauzuli Where z parametrů ve WhereParameters vlastnosti.

Další informace o filtrování dat najdete v tématu Návod: Výběr a filtrování podmnožinu dat pomocí ovládacích prvků LinqDataSource a GridView.

Platí pro