我可以使用反射从EF SqlQuery中获取值名称和值吗

本文关键字:获取 SqlQuery 可以使 反射 EF 我可以 | 更新日期: 2023-09-27 18:29:52

如果我有这样的

 var result = db.Database.SqlQuery<object>("SELECT GroupID, GoupName, GroupValue FROM Group").ToList();

正如你所看到的,我使用对象是因为我并没有一个特定的类可以将它绑定到

有没有任何方法可以从结果中获得列的信息和值。

我尝试使用反射,但它不起作用

 Type type = result.GetType();
 FieldInfo[] fields = type.GetFields();
 foreach (var field in fields) // Loop through fields
 {
     string name = field.Name;
 }

有什么方法可以做到这一点吗感谢

我可以使用反射从EF SqlQuery中获取值名称和值吗

看起来没有办法做到这一点——首先,您的result不是一个单独的对象,而是一个包含对象集合的InternalSqlNonSetQuery。在您的情况下,由于您的泛型参数是object,因此您得到的是完全空的System.Object对象,没有任何参数。

我希望Dictionary<string, object>能起作用,但没有这样的运气。

如果您事先知道字段名称和类型,即使您没有在代码中定义类型,也可以使用此处的技术在运行时定义类型,但这可能不是您想要的。(如果这个链接死了,基本上它所做的就是使用反射发射构建一个全新的类型,并将其用作结果类型,但这不是一个微不足道的代码量)。