LinqDataSource.Where Свойство

Определение

Возвращает или задает значение, которое указывает, что условия должны иметь значение true, чтобы запись могла включаться в извлеченные данные.Gets or sets a value that specifies what conditions must be true for a record to be included in the retrieved data.

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

Значение свойства

Строка, которая используется для создания предложения Where.A string that is used to create the Where clause.

Реализации

Примеры

В следующем примере показано, как фильтровать данные, возвращаемые запросом, на основе статического условия.The following example shows how to filter the data returned from a query based on a static condition.

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

В следующем примере показано, как фильтровать данные на основе значения, предоставленного пользователем во время выполнения.The following example shows how to filter the data based on a value that is provided by the user at run time. В этом примере на странице отображаются элемент управления DropDownList и GridView.In this example a DropDownList control and a GridView control are displayed on the page. Когда пользователь выбирает одно из значений в элементе управления DropDownList, элемент управления LinqDataSource выбирает из Products таблицы только те строки, которые имеют UserPrice значения, равные выбранному значению.When the user selects one of the values in the DropDownList control, the LinqDataSource control selects from the Products table only rows that have UserPrice values equal to the selected value. Затем элемент управления GridView отображает отфильтрованные данные.The GridView control then displays the filtered data.

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

Комментарии

Используйте свойство Where, чтобы указать условия для записи, возвращаемой запросом.You use the Where property to specify the conditions for the record to be returned from a query. Синтаксис для свойства Where совпадает с синтаксисом в предложении LINQ WHERE в C#.The syntax for the Where property is the same as the syntax for a LINQ Where clause in C#.

Вы указываете выражение, результатом которого является логическое значение, и если результатом вычисления выражения является true для данной строки, строка включается в результирующий набор.You specify an expression that results in a Boolean value, and if the expression evaluates to true for a given row, the row is included in the result set. Выражения состоят из имен столбцов, операторов сравнения и сравниваемых значений, как показано в следующем примере:Expressions are composed of column names, comparison operators, and values to compare to, as shown in the following example:

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

Чтобы указать несколько выражений, связанных логическими операторами AND или OR, используйте && в качестве логического оператора и || в качестве логического оператора OR, как показано в следующем примере:To specify multiple expressions linked by logical AND or OR operators, you use && as a logical AND operator and || as a logical OR operator, as shown in the following example:

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

Если требуется протестировать свойство по литеральному строковому значению, строковое значение литерала должно быть заключено в двойные кавычки.If you want to test a property against a literal string value, the literal string value must be enclosed in double quotation marks. Чтобы сделать это в разметке, заключите значение предложения Where в одинарные кавычки, как показано в следующем примере:To do this in markup, enclose the Where clause value in single quotation marks, as shown in the following example:

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

Чтобы проверить литеральное строковое значение в коде, используйте escape-символы, соответствующие используемому языку, чтобы вставить двойные кавычки, как показано в следующем примере:To test against a literal string value in code, use escape characters that are appropriate to the language you are using in order to insert double quotation marks, as shown in the following example:

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

Если необходимо проверить, является ли строка больше или меньше другой строки, необходимо использовать методы класса String, а не использовать операторы < или > между именем столбца и строковым значением.If you want to test whether a string is greater than or less than another string, you must use methods of the String class instead of using < or > operators between the column name and the string value. В следующих примерах показано, как выбрать строки со значениями категорий меньше, меньше или равно, больше или больше или равно "Спорт":The following examples show how to select rows that have Category values that are less than, less than or equal to, greater than, or greater than or equal to "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' ... >  

Можно также использовать другие методы класса String, такие как StartsWith, EndsWithи Contains.You can also use other methods of the String class, such as StartsWith, EndsWith, and Contains. Дополнительные сведения о сравнении строк см. в разделе Сравнение строк.For more information about how to compare strings, see Comparing Strings. Дополнительные сведения о синтаксисе предложения WHERE см. в разделе C# операторы и предложение WHERE.For more information about Where clause syntax, see C# Operators and where clause.

Помимо фильтрации на основе статических значений, которые определяются при создании веб-страницы, можно выполнять фильтрацию на основе динамических значений, вычисляемых во время выполнения.In addition to filtering based on static values that you define when you create the Web page, you can filter based on dynamic values that are evaluated at run time. В этом случае в свойство Where включается именованный параметр, который выступает в качестве заполнителя для значения.In that case, you include a named parameter in the Where property that acts as a placeholder for the value. Затем добавьте параметр с совпадающим именем в коллекцию WhereParameters.You then add a parameter that has the matching name to the WhereParameters collection.

Кроме того, можно задать для свойства AutoGenerateWhereClause значение true и определить параметры в коллекции WhereParameters.Alternatively, you can set the AutoGenerateWhereClause property to true and define the parameters in the WhereParameters collection. Если свойство AutoGenerateWhereClause true, то не нужно включать именованные параметры в свойство Where.When the AutoGenerateWhereClause property is true, you do not have to include the named parameters in the Where property. Вместо этого элемент управления LinqDataSource автоматически создает предложение WHERE на основе параметров в свойстве WhereParameters.Instead, the LinqDataSource control automatically generates the Where clause from the parameters in the WhereParameters property.

Дополнительные сведения о фильтрации данных см. в разделе пошаговое руководство. Выбор и фильтрация подмножества данных с помощью элементов управления LinqDataSource и GridView.For more information about how to filter data, see Walkthrough: Selecting and Filtering a Subset of Data with the LinqDataSource and GridView Controls.

Применяется к