我可以使用反射从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;
}
有什么方法可以做到这一点吗感谢
看起来没有办法做到这一点——首先,您的result
不是一个单独的对象,而是一个包含对象集合的InternalSqlNonSetQuery
。在您的情况下,由于您的泛型参数是object
,因此您得到的是完全空的System.Object
对象,没有任何参数。
我希望Dictionary<string, object>
能起作用,但没有这样的运气。
如果您事先知道字段名称和类型,即使您没有在代码中定义类型,也可以使用此处的技术在运行时定义类型,但这可能不是您想要的。(如果这个链接死了,基本上它所做的就是使用反射发射构建一个全新的类型,并将其用作结果类型,但这不是一个微不足道的代码量)。