Share via


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 表达式示例包括顺序依据、范围或搜索。

以下示例演示如何为派生自 QueryableFilterUserControl的布尔筛选器实现 GetQueryable 方法。

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派生控件,则必须实现此方法。

适用于