LinqDataSource.Where Proprietà

Definizione

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.

Si applica a