Поделиться через


LinqDataSource.Where Свойство

Определение

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

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 операторами или OR , используйте && в качестве логического оператора AND и || как логический оператор 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.

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

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

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

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