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.