LinqDataSource.Where Свойство

Определение

Возвращает или задает значение, указывающее, какие условия должны быть верными для записи, которая должна быть включена в извлеченные данные.

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.

Реализации

Примеры

В следующем примере показано, как отфильтровать данные, возвращаемые из запроса на основе статического условия.

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

В следующем примере показано, как фильтровать данные на основе значения, предоставленного пользователем во время выполнения. В этом примере DropDownList элемент управления и GridView элемент управления отображаются на странице. Когда пользователь выбирает одно из значений элемента DropDownList управления, LinqDataSource элемент управления выбирает из Products таблицы только строки с UserPrice значениями, равными выбранному значению. Затем элемент 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>
<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 для указания условий возврата записи из запроса. Синтаксис свойства совпадает с синтаксисом предложения Where LINQ Where в C#.

Вы указываете выражение, которое приводит к true логическому значению, и если выражение вычисляется для заданной строки, строка включается в результирующий набор. Выражения состоят из имен столбцов, операторов сравнения и значений для сравнения, как показано в следующем примере:

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

Чтобы указать несколько выражений, связанных с логическими AND или операторами, вы используете && в качестве логического оператора AND и || в качестве логического оператора OR OR, как показано в следующем примере:

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

Если вы хотите протестировать свойство с помощью строкового значения литерала, то строковое значение литерала должно быть заключено в двойные кавычки. Для этого в разметке заключите Where значение предложения в одинарные кавычки, как показано в следующем примере:

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

Чтобы проверить значение строки литерала в коде, используйте escape-символы, соответствующие языку, который используется для вставки двойных кавычки, как показано в следующем примере:

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

Если вы хотите проверить, превышает ли строка или меньше другой строки, необходимо использовать методы класса вместо использования < или > операторов String между именем столбца и строковым значением. В следующих примерах показано, как выбрать строки с значениями категории, которые меньше, чем, меньше или равно, больше или больше или равно "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. Дополнительные сведения о сравнении строк см. в разделе "Сравнение строк". Дополнительные сведения о синтаксисе предложения Where см. в разделе "Операторы C#" и "Где".

Помимо фильтрации на основе статических значений, которые определяются при создании веб-страницы, можно фильтровать на основе динамических значений, которые оцениваются во время выполнения. В этом случае вы включаете именованный параметр в свойство, которое выступает в Where качестве заполнителя для значения. Затем вы добавите параметр с соответствующим именем в коллекцию WhereParameters .

Кроме того, можно задать AutoGenerateWhereClause свойство true и определить параметры в WhereParameters коллекции. AutoGenerateWhereClause Если свойство имеет значениеtrue, в свойство не требуется включать именованные параметрыWhere. Вместо этого LinqDataSource элемент управления автоматически создает предложение Where из параметров в свойстве WhereParameters .

Дополнительные сведения о фильтрации данных см. в пошаговом руководстве. Выбор и фильтрация подмножества данных с помощью элементов управления LinqDataSource и GridView.

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