根据名称确定IQueryable列类型

时间:2015-05-21 10:53:03

标签: linq types iqueryable

我有一个iQueryable数据集。

我希望能够根据名称确定数据类型。

我正在对视图模型进行linq查询,我希望从结果查询中获取名称列

2 个答案:

答案 0 :(得分:2)

IQueryable q = ...;
if (q.ElementType.GetProperty("PropertyName").PropertyType == typeof(int))
{
    // PropertyName is an integer property
    . . .
}

答案 1 :(得分:0)

目前还不清楚你在问什么...我希望你不要发现IdIdChild以及ChildId { {1}}只是因为它们包含单词int ...

为了更加理智"你给我查询和财产的名称,我给你Id的财产":

Type

使用它像:

public static class EnumerableEx
{
    public static Type TypeOf<TSource>(this IQueryable<TSource> source, string propertyName)
    {
        PropertyInfo property = typeof(TSource).GetProperty(propertyName);

        return property != null ? property.PropertyType : null;
    }

    public static Type TypeOf<TSource, TType>(this IQueryable<TSource> source, Func<TSource, TType> property)
    {
        return typeof(TType);
    }
}

或者如果您使用的是非通用的Type type = query.TypeOf("Id"); ,请使用@ shevchenko的解决方案