中按名称获得列的类型。
我有一个iQueryable dataset.
我希望能够根据名称确定数据的类型。
我正在对视图模型进行linq查询,我希望从结果查询
IQueryable q = ...;
if (q.ElementType.GetProperty("PropertyName").PropertyType == typeof(int))
{
// PropertyName is an integer property
. . .
}
我不太清楚你在问什么…我希望你不要因为Id
、IdChild
和ChildId
包含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
,使用@舍瓦的解决方案