我需要获得linq结果的属性名称和类型(通过反射或更好的方法)。。。我说得更好,因为我认为linq应该在每个包含此信息的查询中都有一个结构!!!
例如
我有一个linq查询,比如:
dimquery1=从客户端的e0中选择新的{e0.id,e0.name}
我将query1作为参数传递给函数,然后我需要知道query1中有多少属性、属性名称和属性类型。。。
Thx,ZEE;)
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中使用存储的属性。但是上面的代码是最容易理解的。
首先,不应该将以匿名类型实例序列形式键入的查询结果传递给另一个方法。如果要这样做,您应该为查询结果创建一个具体的类。
可以使用反射从query1
中删除属性,如下所示。CCD_ 4将为某个唯一类型的CCD_ 6实现CCD_。一旦你有了这种类型,你就可以调用
type.GetProperties()
以获取匿名类型成员名称的枚举。