C# - 从字典中的对象中获取数组值,类型为string,object

时间:2016-06-22 09:33:21

标签: c# arrays oop dictionary

我有一个类型字典,其中包含一个具有两个十进制属性值的对象数组。为清楚起见,它看起来像这样:

如何访问Easting和Northing值的值?

4 个答案:

答案 0 :(得分:3)

var coordinates =(Coordinates[])values["Coordinates"];
Console.WriteLine(coordinates[0].Easting);
Console.WriteLine(coordinates[0].Northing);

答案 1 :(得分:2)

只获得两个值:

  var easting = values["Coordinates"][0].Easting;
  var northing = values["Coordinates"][0].Northing;

说明:由于values词典

  values["Coordinates"]            - get value (i.e. array) of "Coordinates" key
  values["Coordinates"][0]         - get 1st item of the array of "Coordinates" key
  values["Coordinates"][0].Easting - get Easting property of ...

答案 2 :(得分:1)

values成为Dictonary,"Coordinates"是其中的一个Key。这样我们就可以使用values["Coordinates"]使用此密钥访问关联的值。在您的情况下,该值将是一个集合(数组)。因此,要访问这些值,您需要指定其索引,或者您可以遍历集合以获取它的值。      正如您已经说过的那样Dictonary<string,Object>您需要转换对象以获取Business对象。如果是这样,您可以使用以下代码段:

var currentEasting = (Coordinates[])(values["Coordinates"][0]).Easting;

如果集合定义为Dictonary<string,Coordinates>,则无需投射。可以像这样直接访问它:

 var currentEasting = values["Coordinates"][0].Easting;

您还可以遍历这些值;这段代码将帮助您做到这一点:

foreach (Coordinates Co in values["Coordinates"])
{
   // access each values 
   var someEasting = Co.Easting
}

答案 3 :(得分:0)

有点不清楚词典的定义方式。如果它被定义为Dictionary<string, object>,您将必须使用反射来从值中获取数据,否则您将不得不进行硬编码演员:

var coords = (Coordinates[])values["Coordinates"];
var firstEast = coords[0].Easting;

如果对象不是Coordinates类型,那么这当然会失败。

如果字典定义为Dictionary<string, Coordinates[]>,那么很简单:

var firstEast = values["Coordinates"][0].Easting;