Compartir a través de


LinqDataSource.Where Propiedad

Definición

Obtiene o establece un valor que especifica qué condiciones deben cumplirse para que un registro se incluya en los datos 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 propiedad

Cadena que se utiliza para crear la cláusula Where.

Implementaciones

Ejemplos

En el ejemplo siguiente se muestra cómo filtrar los datos devueltos de una consulta en función de una condición 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>

En el ejemplo siguiente se muestra cómo filtrar los datos en función de un valor proporcionado por el usuario en tiempo de ejecución. En este ejemplo, se muestra un DropDownList control y un GridView control en la página. Cuando el usuario selecciona uno de los valores del DropDownList control, el LinqDataSource control selecciona de las filas solo de la Products tabla que tienen UserPrice valores iguales al valor seleccionado. A GridView continuación, el control muestra los datos 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>

Comentarios

La propiedad se usa Where para especificar las condiciones del registro que se va a devolver desde una consulta. La sintaxis de la Where propiedad es la misma que la de una cláusula LINQ Where en C#.

Especifique una expresión que dé como resultado un valor booleano y, si la expresión se true evalúa como para una fila determinada, la fila se incluye en el conjunto de resultados. Las expresiones se componen de nombres de columna, operadores de comparación y valores con los que comparar, como se muestra en el ejemplo siguiente:

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

Para especificar varias expresiones vinculadas por operadores lógicos AND o OR lógicos, se usa && como operador AND lógico y || como operador OR lógico, como se muestra en el ejemplo siguiente:

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

Si desea probar una propiedad con un valor de cadena literal, el valor de cadena literal debe ir entre comillas dobles. Para ello en el marcado, incluya el valor de la Where cláusula entre comillas simples, como se muestra en el ejemplo siguiente:

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

Para probar con un valor de cadena literal en el código, use caracteres de escape adecuados para el idioma que está usando para insertar comillas dobles, como se muestra en el ejemplo siguiente:

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

Si desea probar si una cadena es mayor o menor que otra cadena, debe usar métodos de la String clase en lugar de usar < operadores o > entre el nombre de columna y el valor de cadena. En los ejemplos siguientes se muestra cómo seleccionar filas que tienen valores category que son menores, menores o iguales que, mayores o iguales que , o mayores o iguales que "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' ... >  

También puede usar otros métodos de la String clase , como StartsWith, EndsWithy Contains. Para obtener más información sobre cómo comparar cadenas, vea Comparar cadenas. Para obtener más información sobre la sintaxis de la cláusula Where, vea Operadores de C# y cláusula where.

Además de filtrar en función de los valores estáticos que defina al crear la página web, puede filtrar en función de los valores dinámicos que se evalúan en tiempo de ejecución. En ese caso, se incluye un parámetro con nombre en la Where propiedad que actúa como marcador de posición para el valor. A continuación, agregue un parámetro que tenga el nombre coincidente en la WhereParameters colección.

Como alternativa, puede establecer la AutoGenerateWhereClause propiedad true en y definir los parámetros de la WhereParameters colección. Cuando la AutoGenerateWhereClause propiedad es true, no es necesario incluir los parámetros con nombre en la Where propiedad . En su lugar, el LinqDataSource control genera automáticamente la cláusula Where a partir de los parámetros de la WhereParameters propiedad .

Para obtener más información sobre cómo filtrar datos, vea Tutorial: Selección y filtrado de un subconjunto de datos con los controles LinqDataSource y GridView.

Se aplica a