通过使用AddRange </t>添加对象来访问List <t>中的对象

时间:2014-11-16 11:57:24

标签: c# list collections

有没有办法访问列表中的对象?比如,在特定对象中获取确切的字段。对于实例:

List<Object> allObjectResult = new List<Object>();
allObjectResult.AddRange(method(ObjectOne.ToArray()));
allObjectResult.AddRange(method(ObjectTwo.ToArray()));
allObjectResult.AddRange(method(ObjectThree.ToArray()));

我想在ObjectOne,ObjectTwo和ObjectThree中获取特定字段。我怎么能这样做?

  

更新问题

在List中,我们可以按顺序访问元素位置。我第一次尝试在List中的对象中获取特定值。这就是我所做的:

创建列表的新实例:

List<Object> objList = new List<Object>();

在其上添加了数据:

objList.Add(objdata);

在方法中使用它:

Object[] result = binding.method(Object.ToArray());

循环:

for(i = 0; i < result.Length; i++)
{
  Console.WriteLine("objs {0} - {1}", objList[i].Name, result[i].id);
}

然而,我想要的是我有三个对象。我所做的是将它们添加到列表中:

List<Object> allObjectResult = new List<Object>();
allObjectResult.AddRange(binding.method(ObjectOneList.ToArray()));
allObjectResult.AddRange(binding.method(ObjectTwoList.ToArray()));
allObjectResult.AddRange(binding.method(ObjectThreeList.ToArray()));

我想做同样的事情,就像我在对象中获取名称一样(无论如何,它是List中的对象)。我希望他们使用循环访问。

1 个答案:

答案 0 :(得分:1)

选择特定类型的对象:

foreach (var obj1 in allObjectResult.OfType<ObjectOne>()) {
  Console.WriteLine(obj1.Whatever);
}

动态检查类型:

foreach (var obj in allObjectResult) {
  if (obj is ObjectOne) {
    var obj1 = (ObjectOne)obj;
    Console.WriteLine(obj1.Whatever);
  } // else ...
}