LinqDataSource.Where Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene o imposta un valore che specifica quali condizioni devono verificarsi affinché un record venga incluso nei dati recuperati.
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
Valore della proprietà
Stringa utilizzata per creare la clausola Where.
Implementazioni
Esempio
Nell'esempio seguente viene illustrato come filtrare i dati restituiti da una query in base a una condizione statica.
<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>
Nell'esempio seguente viene illustrato come filtrare i dati in base a un valore fornito dall'utente in fase di esecuzione. In questo esempio un DropDownList controllo e un GridView controllo vengono visualizzati nella pagina. Quando l'utente seleziona uno dei valori nel DropDownList controllo, il LinqDataSource controllo seleziona dalla Products
tabella solo le righe con UserPrice
valori uguali al valore selezionato. Il GridView controllo visualizza quindi i dati filtrati.
<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>
Commenti
Utilizzare la Where proprietà per specificare le condizioni per la restituzione del record da una query. La sintassi per la Where proprietà è la stessa della sintassi per una clausola LINQ Where in C#.
Specificare un'espressione che restituisce un valore booleano e se l'espressione restituisce true
per una determinata riga, la riga viene inclusa nel set di risultati. Le espressioni sono costituite da nomi di colonna, operatori di confronto e valori da confrontare, come illustrato nell'esempio seguente:
<asp:LinqDataSource ... Where="Price > 50"...>
Per specificare più espressioni collegate da operatori logici oOR
, AND
usare &&
come operatore AND logico e ||
come operatore OR logico, come illustrato nell'esempio seguente:
<asp:LinqDataSource ... Where="Price > 50 && Price < 100"...>
<asp:LinqDataSource ... Where="Price <= 50 || Price >= 100"...>
Se si desidera testare una proprietà su un valore stringa letterale, il valore stringa letterale deve essere racchiuso tra virgolette doppie. Per eseguire questa operazione nel markup, racchiudere il valore della Where clausola tra virgolette singole, come illustrato nell'esempio seguente:
<asp:LinqDataSource ... Where='Category = "Sports"' ... >
Per eseguire il test su un valore stringa letterale nel codice, usare caratteri di escape appropriati per la lingua in uso per inserire virgolette doppie, come illustrato nell'esempio seguente:
LinqDataSource1.Where = "Category = ""Sports"""
LinqDataSource1.Where = "Category = \"Sports\"";
Se si desidera verificare se una stringa è maggiore o minore di un'altra stringa, è necessario usare i metodi della String classe anziché usare <
gli operatori o >
tra il nome della colonna e il valore stringa. Gli esempi seguenti illustrano come selezionare le righe con valori category minori, minori o uguali a, maggiori o maggiori o uguali a "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' ... >
È anche possibile usare altri metodi della String classe , ad esempio StartsWith, EndsWithe Contains. Per altre informazioni su come confrontare le stringhe, vedere Confronto di stringhe. Per altre informazioni sulla sintassi della clausola Where, vedere Operatori C# e clausola where.
Oltre a filtrare in base ai valori statici definiti durante la creazione della pagina Web, è possibile filtrare in base ai valori dinamici valutati in fase di esecuzione. In tal caso, si include un parametro denominato nella Where proprietà che funge da segnaposto per il valore. Si aggiunge quindi un parametro con il nome corrispondente alla WhereParameters raccolta.
In alternativa, è possibile impostare la AutoGenerateWhereClause proprietà su true
e definire i parametri nella WhereParameters raccolta. Quando la AutoGenerateWhereClause proprietà è true
, non è necessario includere i parametri denominati nella Where proprietà . Al contrario, il LinqDataSource controllo genera automaticamente la clausola Where dai parametri nella WhereParameters proprietà .
Per altre informazioni su come filtrare i dati, vedere Procedura dettagliata: Selezione e filtro di un subset di dati con i controlli LinqDataSource e GridView.