LinqDataSource.Where Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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.