LinqDataSource.Where Propriedade

Definição

Obtém ou define um valor que especifica quais as condições que devem ser verdadeiras para que um registo seja incluído nos dados recuperados.

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

Valor de Propriedade

Uma cadeia que é usada para criar a cláusula Where.

Implementações

Exemplos

O exemplo seguinte mostra como filtrar os dados devolvidos de uma consulta com base numa condição estática.

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

O exemplo seguinte mostra como filtrar os dados com base num valor fornecido pelo utilizador em tempo de execução. Neste exemplo, um DropDownList controlo e um GridView controlo são apresentados na página. Quando o utilizador seleciona um dos valores no DropDownList controlo, o LinqDataSource controlo seleciona da Products tabela apenas as linhas que têm UserPrice valores iguais ao valor selecionado. O GridView controlo apresenta então os dados filtrados.

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

Observações

Usa a Where propriedade para especificar as condições para que o registo seja devolvido a partir de uma consulta. A sintaxe da Where propriedade é a mesma que a de uma cláusula LINQ Where em C#.

Especificas uma expressão que resulta num valor booleano e, se a expressão for avaliada como true para uma dada linha, a linha é incluída no conjunto de resultados. As expressões são compostas por nomes de colunas, operadores de comparação e valores a comparar, como mostrado no seguinte exemplo:

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

Para especificar múltiplas expressões ligadas por operadores lógicos AND ou OR por operadores, usa-se && como operador AND lógico e || como operador OR lógico, como mostrado no exemplo seguinte:

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

Se quiser testar uma propriedade contra um valor de cadeia literal, o valor da cadeia literal deve estar incluído entre aspas duplas. Para fazer isto em marcação, inclua o valor da Where cláusula em aspas simples, como mostrado no exemplo seguinte:

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

Para testar contra um valor literal de cadeia no código, use caracteres de escape apropriados à linguagem que está a usar para inserir aspas duplas, como mostrado no seguinte exemplo:

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

Se quiser testar se uma cadeia é maior ou menor que outra cadeia, deve usar métodos da String classe em vez de usar < operadores or > entre o nome da coluna e o valor da cadeia. Os exemplos seguintes mostram como selecionar linhas que têm valores de Categoria inferiores, menores ou iguais a, maiores que, ou maiores ou iguais a "Desporto":

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

Também pode usar outros métodos da String classe, como StartsWith, EndsWith, e Contains. Para mais informações sobre como comparar cordas, consulte Comparar Cordas. Para mais informações sobre a sintaxe da cláusula Where, veja Operadores C# e cláusula where.

Para além de filtrar com base em valores estáticos que define ao criar a página Web, pode filtrar com base em valores dinâmicos que são avaliados em tempo de execução. Nesse caso, inclui um parâmetro nomeado na Where propriedade que atua como marcador para o valor. Depois adiciona-se um parâmetro com o nome correspondente à WhereParameters coleção.

Alternativamente, pode definir a AutoGenerateWhereClause propriedade para true e definir os parâmetros na WhereParameters coleção. Quando a AutoGenerateWhereClause propriedade é true, não é necessário incluir os parâmetros nomeados na Where propriedade. Em vez disso, o controlo LinqDataSource gera automaticamente a cláusula Where a partir dos parâmetros da WhereParameters propriedade.

Para mais informações sobre como filtrar dados, consulte Walkthrough: Selecionar e Filtrar um Subconjunto de Dados com os controlos LinqDataSource e GridView.

Aplica-se a