我仍然无法从列表中获取数据。我的列表包含一个对象列表。 (如果这是有道理的)
我认为这只是一个语法问题。但我需要到达对象级别来调用属性。
所以这是我列表的结构,当我开始考虑调试器,让你知道它有多深。
Name Value
ItemList count = 40
-> [0] count = 1
--->[0] {namespace.class}
----> Propties Values
现在,我可以看到这些属性的属性和值。
访问这些属性的语法是什么?
我将描述我的结构是如何设置的。所以这是我的“组件对象”列表
List<Component> SYNCItems = new List<Component>();
所有属性都分配给对象并添加到此列表中。
现在列表SyncItems正被添加到ItemsList中以及其他项目。
List<Object> ItemsList = new List<object>();
ItemsList.Add(SYNCItems);
所以它就像一个多数组列表。
这有帮助吗?
答案 0 :(得分:1)
(编辑以回应最新消息)
您正在使用List<object>
来存储应该是List<List<Component>>
的内容。组件列表可以放在对象列表中,但它将作为对象存储,您将无法再以列表的形式访问它而不会退回。
更改为以下内容:
List<Object> ItemsList = new List<object>();
到
var ItemsList = new List<List<Component>>(); // you can use type inference to save you some typing
(如果您使用的是C#2.0,请指定类型名称而不是var
,如下所示:)
List<List<Component>> ItemsList = new List<List<Component>>();
然后,您应该可以通过ItemList[0][0].Property
或foreach迭代等访问内部列表。
答案 1 :(得分:1)
如果您只想读取数据,可以获得内部列表。
var innerList = ItemList.SelectMany(i => ((List<Component>)i).ToList());
然后您可以访问属性:
foreach(var prop in innerList)
//do something with prop.myProperty
编辑 - 更新了回答编辑问题的答案。使用List<Component>
代替List<object>
。
答案 2 :(得分:1)
首先误读了这个问题。假设你的意思是:
List<List<Person>>;
以下是一个例子:
public class Person
{
public string Name {get;set;}
}
List<List<Person>> superHeroes = new List<List<Person>>();
List<Person> persons = new List<Person>();
Person p = new Person {Name = "Superman"};
Person p2 = new Person {Name = "Batman"};
Person p3 = new Person {Name = "Spiderman"};
persons.Add(p);
persons.Add(p2);
persons.Add(p3);
superHeroes.Add(persons);
string batmanName = superHeroes[0][0].Name; //returns "Superman"
当您说您的列表包含对象列表时,您的意思是列表中的列表还是仅包含多个对象的列表。
答案 3 :(得分:0)
怎么样
ItemList.ElementAt(0).ElementAt(0).Properties
或者那种效果。
我认为您想要访问ElementAt(int index)
的列表元素答案 4 :(得分:0)
啊,我现在看到你的问题了。干得好。试试这个:
List<SomeClass> SYNCItems = new List<SomeClass>();
var obj1 = new SomeClass() { SomeProperty = "test" };
SYNCItems.Add(obj1);
var obj2 = new SomeClass() { SomeProperty = "test" };
SYNCItems.Add(obj2);
List<Object> ItemsList = new List<object>();
ItemsList.Add(SYNCItems);
var list = (ItemsList[0]) as List<SomeClass>;
Console.WriteLine(list[0].SomeProperty);
Console.WriteLine(list[1].SomeProperty);
只是为了完整性,这里是SomeClass。 :)
public class SomeClass
{
public string SomeProperty { get; set; }
}