LinqDataSource.Where Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
Ř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 true
tato 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.