LinqDataSource.Where Propriedade

Definição

Obtém ou define um valor que especifica quais condições devem ser verdadeiras para um registro ser 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 da propriedade

String

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

Implementações

Exemplos

O exemplo a seguir mostra como filtrar os dados retornados de uma consulta com base em uma 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 a seguir mostra como filtrar os dados com base em um valor fornecido pelo usuário em tempo de execução. Neste exemplo, um DropDownList controle e um GridView controle são exibidos na página. Quando o usuário seleciona um dos valores no DropDownList controle, o LinqDataSource controle seleciona na tabela apenas linhas Products que têm UserPrice valores iguais ao valor selecionado. Em GridView seguida, o controle exibe 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>

Comentários

Você usa a Where propriedade para especificar as condições para que o registro seja retornado de uma consulta. A sintaxe da Where propriedade é igual à sintaxe de uma cláusula LINQ Where em C#.

Você especifica uma expressão que resulta em um valor booliano e, se a expressão for avaliada true para uma determinada linha, a linha será incluída no conjunto de resultados. As expressões são compostas por nomes de colunas, operadores de comparação e valores a serem comparados, conforme mostrado no exemplo a seguir:

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

Para especificar várias expressões vinculadas por operadores ou lógicosAND, você usa && como um operador AND lógico e || como um operador OR lógico, conforme mostrado no exemplo a OR seguir:

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

Se você quiser testar uma propriedade em relação a um valor de cadeia de caracteres literal, o valor da cadeia de caracteres literal deverá estar entre aspas duplas. Para fazer isso na marcação, coloque o valor da cláusula entre aspas Where simples, conforme mostrado no exemplo a seguir:

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

Para testar um valor de cadeia de caracteres literal no código, use caracteres de escape apropriados ao idioma que você está usando para inserir aspas duplas, conforme mostrado no exemplo a seguir:

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

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

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

Você também pode usar outros métodos da String classe, como StartsWith, EndsWithe Contains. Para obter mais informações sobre como comparar cadeias de caracteres, consulte Comparando cadeias de caracteres. Para obter mais informações sobre a sintaxe da cláusula Where, consulte Operadores C# e onde cláusula.

Além de filtrar com base em valores estáticos que você define ao criar a página da Web, você pode filtrar com base em valores dinâmicos avaliados em tempo de execução. Nesse caso, você inclui um parâmetro nomeado na Where propriedade que atua como um espaço reservado para o valor. Em seguida, adicione um parâmetro que tenha o nome correspondente à WhereParameters coleção.

Como alternativa, você pode definir a AutoGenerateWhereClause propriedade true e definir os parâmetros na WhereParameters coleção. Quando a AutoGenerateWhereClause propriedade é true, você não precisa incluir os parâmetros nomeados na Where propriedade. Em vez disso, o LinqDataSource controle gera automaticamente a cláusula Where dos parâmetros na WhereParameters propriedade.

Para obter mais informações sobre como filtrar dados, consulte Passo a passo: selecionando e filtrando um subconjunto de dados com os controles LinqDataSource e GridView.

Aplica-se a