次の方法で共有


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 コントロールがページに表示されます。 ユーザーがコントロール内の値の 1 つを 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 構文は、C# の LINQ Where 句の構文と同じです。

ブール値になる式を指定し、指定された行に対して 式が に 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"' ... >  

コード内のリテラル文字列値に対してテストするには、次の例に示すように、使用している言語に適したエスケープ文字を使用して二重引用符を挿入します。

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

文字列が別の文字列より大きいか小さいかをテストする場合は、列名と文字列値の間に または > 演算子をString使用する代わりに、 クラスのメソッドを使用<する必要があります。 次の例では、"Sports" より小さい、以下、大きい、または以上の Category 値を持つ行を選択する方法を示します。

<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メソッド (、、、 ContainsなどStartsWithEndsWith) を使用することもできます。 文字列を比較する方法の詳細については、「文字列 の比較」を参照してください。 Where 句の構文の詳細については、「 C# 演算子 」および 「where 句」を参照してください。

Web ページの作成時に定義した静的な値に基づいてフィルター処理するだけでなく、実行時に評価される動的値に基づいてフィルター処理することもできます。 その場合、値のプレースホルダーとして機能する名前付きパラメーター Where を プロパティに含めます。 次に、一致する名前を持つパラメーターをコレクションに WhereParameters 追加します。

または、 プロパティを にAutoGenerateWhereClausetrue設定し、コレクション内のパラメーターをWhereParameters定義することもできます。 プロパティが の AutoGenerateWhereClause 場合、 trueプロパティに名前付きパラメーター Where を含める必要はありません。 代わりに、 コントロールは LinqDataSource 、 プロパティのパラメーターから Where 句を自動的に WhereParameters 生成します。

データをフィルター処理する方法の詳細については、「 チュートリアル: LinqDataSource コントロールと GridView コントロールを使用したデータのサブセットの選択とフィルター処理」を参照してください。

適用対象