如何将IEnumerable(没有类型)转换为IQueryable <T>?

Mar*_*cel 4 c# linq collections ienumerable iqueryable

我使用LINQ了很多,我今天在基本任务上遇到了磕磕绊绊:

具有IQueryable<T>出的IEnumerable(没有指定的类型).

具体来说,我想查询SqlParameterCollection的参数.这是从派生IDataParameterCollection, IList, ICollection, IEnumerable这里描述.但是,这些都没有指定的类型.

因此,我的问题归结为:如何使用LINQ查询SqlParameterCollection?

这就是我所做的(编译器没有抱怨):

IQueryable<SqlParameter> queryable = 
    sqlCommand.Parameters.AsQueryable().Cast<SqlParameter>();
    //throws ArgumentException "source is not IEnumerable<>"
Run Code Online (Sandbox Code Playgroud)

注意:我已经搜索了很多,但是每个人都在谈论IEnumerable<T>哪个使用AsQueryable()当然很容易查询.

Rob*_*cke 5

我对你想要这样做的原因感兴趣.这应该做你解释的:

public IQueryable<T> AsQueryable<T>(IEnumerable list)
{
    return list.Cast<T>().AsQueryable();   
}
Run Code Online (Sandbox Code Playgroud)

像这样打电话:

IQueryable<SqlParameter> query = AsQueryable<SqlParameter>(sqlParameterCollection);
Run Code Online (Sandbox Code Playgroud)