Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.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中提取数据_C#_Asp.net_Asp.net Mvc - Fatal编程技术网

C# 从对象数组C中提取数据

C# 从对象数组C中提取数据,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,查看上面的示例,我想知道如何将类型为object的requestedClass转换为数组以供读取 [HttpGet] public object Get(string table, string columns, int id) { var splitColumns = columns.Split(','); var t = new propertyModel() { gallery = _db.PR

查看上面的示例,我想知道如何将类型为object的requestedClass转换为数组以供读取

    [HttpGet]
    public object Get(string table, string columns, int id)
    {
        var splitColumns = columns.Split(',');
        var t = new propertyModel()
        {
            gallery = _db.PROPERTYGALLERies.Where(p => p.propertyId == id).ToList(),
            property = _db.PROPERTies.SingleOrDefault(p => p.id == id)
        };

        var requestedClass = t.GetType().GetProperty(table.ToLower()).GetValue(t, null);
        var returnArray = new Dictionary<string, List<string>>();
        var requestArray = new List<string>();

        foreach (var column in splitColumns)
        {
            foreach (var field in StringProperties(requestedClass, column))
            {
                requestArray.Add(field.Value);
            }
        }

        returnArray.Add(table, requestArray);

        return Json(returnArray, JsonRequestBehavior.AllowGet);
    }

    public IEnumerable<KeyValuePair<string, string>> StringProperties(object obj, string column)
    {
        return from p in obj.GetType().GetProperties()
               where p.Name == column
               select new KeyValuePair<string, string>(p.Name, Convert.ToString(p.GetValue(obj)));
    }

您可以将其强制转换为适当的底层类型。例如,如果对象实际上是DataObject[]的一个实例,则可以执行以下操作:

DataObject[] mydataObjectArray = (DataObject[])requestedClass;

你应该准备好了。请记住,DataObject只是我用来说明这个概念的一个虚构类。无论requestedClass在被转换为对象之前最初是什么,您都需要将其转换为什么

您可以将其强制转换为任何适当的底层类型。例如,如果对象实际上是DataObject[]的一个实例,则可以执行以下操作:

DataObject[] mydataObjectArray = (DataObject[])requestedClass;

你应该准备好了。请记住,DataObject只是我用来说明这个概念的一个虚构类。无论requestedClass在被转换为对象之前最初是什么,您都需要将其转换为什么

这取决于您在编译时对对象的了解。如果您只知道它是一个IEnumerable,那么您应该能够像这样对它进行转换:

object[] values = ((IEnumerable<object>)requestedClass).ToArray();

这取决于您在编译时对对象的了解。如果您只知道它是一个IEnumerable,那么您应该能够像这样对它进行转换:

object[] values = ((IEnumerable<object>)requestedClass).ToArray();


很抱歉提出一个简短的问题,试图为两个小家伙的晚餐排序,同时也解决了这个问题:能否请您将代码显示为纯文本,而不是图像?是的,当然,两秒钟requestedClass的值是什么。GetType?@DangerZone我认为它仍然相关,如果您仍然不这样做,我可以确定地删除它。只是它显示了requestedClass的结果抱歉,简短的问题,尝试为两个小家伙的晚餐排序,同时也解决了这个问题:能否请您将代码显示为纯文本,而不是图像?是的,当然,两秒钟requestedClass的值是什么。GetType?@DangerZone我认为它仍然相关,如果你还不知道,我肯定可以把它搬走。它显示了requestedClassProblem的结果是动态地获取对象类。据我所知,atm无法将数据类型转换成变量,以这种方式使用。这取决于你想用它做什么。您可以使用requestedClass.GetType并对任意数量的内容使用反射。就像我说的,这完全取决于你想用它做什么。让我快速创建一个视频,向你展示我的要求。。。我们不需要视频。只要描述一下你想要达到的目标。可能包括一些伪代码作为示例来提供一些上下文。基本上,我正在尝试调用URL,例如/{controller}/{action}/{table}/{fields}/{id}和API,以从所选表传回所选字段。它非常适用于SingleOrDefault数据类型,但当它存储在数组中时,我遇到了无法转换为可以迭代的内容的问题。我遇到的问题是,我动态地获取对象类。据我所知,atm无法将数据类型转换成变量,以这种方式使用。这取决于你想用它做什么。您可以使用requestedClass.GetType并对任意数量的内容使用反射。就像我说的,这完全取决于你想用它做什么。让我快速创建一个视频,向你展示我的要求。。。我们不需要视频。只要描述一下你想要达到的目标。可能包括一些伪代码作为示例来提供一些上下文。基本上,我正在尝试调用URL,例如/{controller}/{action}/{table}/{fields}/{id}和API,以从所选表传回所选字段。它非常适用于SingleOrDefault数据类型,但当它存储在数组中时,我遇到了无法转换为可以迭代的对象的问题。不幸的是,我不知道他们将请求什么对象类。基本上,我试图调用一个URL,比如/{controller}/{action}/{table}/{fields}/{id}和API,以便从所选表传回所选字段。它非常适用于SingleOrDefault数据类型,但当它存储在数组中时,我会遇到无法转换为我可以迭代的内容的问题。实际上,这与最终结果非常接近,所以我会向上投票,但无法将其作为正确答案推送。如果您想将答案稍微修改为IEnumerable collection=IEnumerablerequestedClass;然后是收藏中的foreach案例。我将把它标记为答案。@TheAngrySaxon:让我知道我更新的答案是否足够正确。不,没有必要转换为Array,因为它已经被视为一个。我所需要做的就是将每个对象数组存储到IEnumerable中,我甚至不确定是否也需要转换为IEnumerable。模型类需要保持不明确,因为它是在运行时设置的。@TheAngrySaxon:看上面的示例,我想知道如何将object类型的requestedClass转换为数组,以便读取。ToArray确保它是一个
大堆如果您不需要数组,只需忽略该调用。不幸的是,我不知道他们将请求什么对象类。基本上,我试图调用一个URL,比如/{controller}/{action}/{table}/{fields}/{id}和API,以便从所选表传回所选字段。它非常适用于SingleOrDefault数据类型,但当它存储在数组中时,我会遇到无法转换为我可以迭代的内容的问题。实际上,这与最终结果非常接近,所以我会向上投票,但无法将其作为正确答案推送。如果您想将答案稍微修改为IEnumerable collection=IEnumerablerequestedClass;然后是收藏中的foreach案例。我将把它标记为答案。@TheAngrySaxon:让我知道我更新的答案是否足够正确。不,没有必要转换为Array,因为它已经被视为一个。我所需要做的就是将每个对象数组存储到IEnumerable中,我甚至不确定是否也需要转换为IEnumerable。模型类需要保持不明确,因为它是在运行时设置的。@TheAngrySaxon:看上面的示例,我想知道如何将object类型的requestedClass转换为数组,以便读取。ToArray确保它是一个数组。如果不需要数组,只需省略该调用即可。