Language

QueryableFilterUserControl.GetQueryable(IQueryable) メソッド

定義

変換された IQueryable オブジェクトをソース IQueryable オブジェクトから取得します。

public:
 abstract System::Linq::IQueryable ^ GetQueryable(System::Linq::IQueryable ^ source);
public abstract System.Linq.IQueryable GetQueryable(System.Linq.IQueryable source);
abstract member GetQueryable : System.Linq.IQueryable -> System.Linq.IQueryable
Public MustOverride Function GetQueryable (source As IQueryable) As IQueryable

パラメーター

source
IQueryable

ソース IQueryable オブジェクト。

返品

変換された IQueryable オブジェクトをソース IQueryable オブジェクトから取得します。

例

このメソッドは、ソース IQueryable オブジェクトをターゲット IQueryable オブジェクトに変換するために実装されます。 実装する IQueryable 式の例には、順序、範囲、検索などがあります。

次の例は、GetQueryableから派生したブール型フィルターのQueryableFilterUserControl メソッドを実装する方法を示しています。

public override IQueryable GetQueryable(IQueryable source) {
    if (String.IsNullOrEmpty(DropDownList1.SelectedValue)) {
        return source;
    }

    bool value = Convert.ToBoolean(DropDownList1.SelectedValue);

    ParameterExpression parameterExpression =
        Expression.Parameter(source.ElementType, "item");
    Expression body = BuildQueryBody(
        parameterExpression, value);

    LambdaExpression lambda = Expression.Lambda(body,
        parameterExpression);
    MethodCallExpression whereCall = Expression.Call(
        typeof(Queryable),
        "Where",
        new Type[] { source.ElementType },
        source.Expression, Expression.Quote(lambda));
    return source.Provider.CreateQuery(whereCall);
}
Public Overloads Overrides Function GetQueryable(ByVal source As IQueryable) As IQueryable
    If [String].IsNullOrEmpty(DropDownList1.SelectedValue) Then
        Return source
    End If

    Dim value As Boolean = Convert.ToBoolean(DropDownList1.SelectedValue)

    Dim parameterExpression As ParameterExpression = Expression.Parameter(source.ElementType, "item")
    Dim body As Expression = BuildQueryBody(parameterExpression, value)

    Dim lambda As LambdaExpression = Expression.Lambda(body, parameterExpression)
    Dim whereCall As MethodCallExpression = Expression.[Call](GetType(Queryable), "Where", _
         New Type() {source.ElementType}, source.Expression, Expression.Quote(lambda))
    Return source.Provider.CreateQuery(whereCall)
End Function

注釈

QueryableFilterUserControlからコントロールを派生させる場合は、このメソッドを実装する必要があります。

適用対象