Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将动态从简洁的查询转换为对象_C#_Object_Dynamic_Dapper - Fatal编程技术网

C# 将动态从简洁的查询转换为对象

C# 将动态从简洁的查询转换为对象,c#,object,dynamic,dapper,C#,Object,Dynamic,Dapper,是否可以将Dapper.Query返回的动态变量转换为object?例如: class MyClass { public int Id { get; set;} public string SomeData { get; set; } } IEnumerable<dynamic> data = sql.Query<dynamic>(SELECT * FROM MyClassTable"); foreach(var record in data) {

是否可以将Dapper.Query返回的动态变量转换为object?例如:

class MyClass 
{
    public int Id { get; set;}
    public string SomeData { get; set; }
}

IEnumerable<dynamic> data = sql.Query<dynamic>(SELECT * FROM MyClassTable");
foreach(var record in data)
{
    int parent_id = record.SomeId;
    // any simple way to fill MyClass properites from record?
    // instead of doing in manually?
    MyClass obj = ?
}
有什么简单的方法可以从记录中填充MyClass属性吗? 而不是手动操作

不。很遗憾,你必须手动操作。您可以做的最好的事情是将映射逻辑移动到一个位置,以便在数据访问层中重用它。我通常使用扩展方法,但您也可以使用反射来设置匹配的属性名称……然而,在我个人看来,我通常使用dapper来提高性能,并且使用反射有点昂贵,因此我通常避免在这些情况下使用反射

是否可以将Dapper.Query返回的动态变量转换为object

对。如上所述

我知道您可能想简化您的问题,但我想值得指出的是,如果MyClass表示select查询返回的记录,那么您发布的示例不需要返回动态对象。您可以简单地执行以下操作

var data = sql.Query<MyClass>(SELECT * FROM MyClassTable");
有什么简单的方法可以从记录中填充MyClass属性吗? 而不是手动操作

不。很遗憾,你必须手动操作。您可以做的最好的事情是将映射逻辑移动到一个位置,以便在数据访问层中重用它。我通常使用扩展方法,但您也可以使用反射来设置匹配的属性名称……然而,在我个人看来,我通常使用dapper来提高性能,并且使用反射有点昂贵,因此我通常避免在这些情况下使用反射

是否可以将Dapper.Query返回的动态变量转换为object

对。如上所述

我知道您可能想简化您的问题,但我想值得指出的是,如果MyClass表示select查询返回的记录,那么您发布的示例不需要返回动态对象。您可以简单地执行以下操作

var data = sql.Query<MyClass>(SELECT * FROM MyClassTable");

是的,但我在示例中的MyClassTable SomeId中还有其他参数要处理。我知道多重映射,但我不想在这种情况下使用它。是的,但我想处理示例中MyClassTable SomeId中的其他参数。我知道多重映射,但我不想在这种情况下使用它。