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

时间:2014-06-27 11:36:04

标签: c# linq collections ienumerable iqueryable

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

IQueryable<T>IEnumerable(未指定类型)。

具体来说,我想查询SqlParameterCollection的参数。这源自IDataParameterCollection, IList, ICollection, IEnumerable described here。但是,这些都没有指定的类型。

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

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

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

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

1 个答案:

答案 0 :(得分:5)

我对你想要这样做的原因感兴趣。 这应该按照你解释的那样做:

public IQueryable<T> AsQueryable<T>(IEnumerable list)
{
    return list.Cast<T>().AsQueryable();   
}

这样打电话:

IQueryable<SqlParameter> query = AsQueryable<SqlParameter>(sqlParameterCollection);