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.