根据名称确定可查询列类型



我有一个iQueryable dataset.

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

我正在对视图模型进行linq查询,我希望从结果查询

中按名称获得列的类型。
IQueryable q = ...;
if (q.ElementType.GetProperty("PropertyName").PropertyType == typeof(int))
{
    // PropertyName is an integer property
    . . .
}

我不太清楚你在问什么…我希望你不要因为IdIdChildChildId包含Id这个词就发现它们是int……

对于更理智的"你给我查询和属性的名称,我给你属性的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");

或者如果你使用非通用的IQueryable,使用@舍瓦的解决方案

相关内容

  • 没有找到相关文章

最新更新