LinqDataSource.Where Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém ou define um valor que especifica quais condições devem ser verdadeiras para que um registro 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 da propriedade
Uma cadeia de caracteres 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 é a mesma que a sintaxe de uma cláusula LINQ Where em C#.
Especifique true uma expressão que resulte em um valor booliano e, se a expressão for avaliada para uma determinada linha, a linha será incluída no conjunto de resultados. As expressões são compostas por nomes de coluna, 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 lógicos 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á ser colocado entre aspas duplas. Para fazer isso na marcação, coloque o valor da Where cláusula entre aspas 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 para o 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 com 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 cláusula where.
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 que são 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, você adiciona um parâmetro que tem 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 estiver true, você não precisará 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.