我需要获取linq结果的属性名称和类型(通过反射或更好)... 我说得更好因为我认为linq应该在每个查询中都有这个信息的结构!!!
例如
我有一个linq查询,如:
dim query1 =来自客户端的e0选择新的{e0.id,e0.name}
我将query1作为参数传递给函数,然后我需要知道query1中有多少属性,属性名称和属性类型......
Thx,ZEE;)
答案 0 :(得分:0)
Type memberType = query1.GetType().GetGenericArguments()[0];
foreach (var a in query1)
{
foreach (PropertyInfo pi in memberType.GetProperties())
{
Console.WriteLine(pi.GetValue(a, null));
}
}
实际上我将PropertyInfo
存储在List<PropertyInfo>
和内部foreach中,使用存储的属性。但上面的代码是最容易理解的。
答案 1 :(得分:0)
首先,您不应将作为匿名类型实例序列的查询结果传递给另一个方法。如果你这样做,你应该为查询结果创建一个具体的类。
您可以使用反射从query1
中删除属性,如下所示。 query1
会针对某些唯一类型IEnumerable<T>
实施T
。有了这种类型,你可以打电话给
type.GetProperties()
获取匿名类型成员名称的枚举。