【问题标题】:Can we create a list that contains three lists with different amount of values?我们可以创建一个包含三个具有不同数量值的列表的列表吗?
【发布时间】:2021-05-26 22:12:41
【问题描述】:

我一直在研究一种创建包含多个 int 和 string 列表的 List 的方法,例如: 父列表将包含子列表,每个子列表包含两个项目(ID 和名称),项目数量不必相等(这就是我不能使用元组的原因 示例: 父列表子列表一个 ID = 许多 名称 = 1 添加我们所做的值:

parentList.childListOne.ID.ADD(something) 
parentList.childListOne.Name.ADD(something) 

如果有更好的方法来实现这一点,我们将不胜感激。 我知道这个问题的措辞不是很清楚,但这是据我所知。

【问题讨论】:

  • 你是否被一些特定的东西所困扰?搜索“列表列表”或“锯齿状数组”以获得一些想法
  • parentList 不能是具有childListOne 属性的列表:List<T> 没有这样的属性。为什么叫它parentList?它的类型是什么?另外,您是想说可以有多个 ID 和 Name 并且数字不必匹配?

标签: c# asp.net linq


【解决方案1】:

这就是我不能使用元组的原因

当然可以:

(string Name, int Id) tuple = ("John", 1);

var listOfTuples = new List<(string, int)>();

listOfTuples.Add(tuple);

var listOf_listOfTuples = new List<List<(string, int)>>();

listOf_listOfTuples.Add(listOfTuples);

//add another person to the first list 
listOf_listOfTuples[0].Add(("Mary", 2));

//add another list of tuples
listOf_listOfTuples.Add(new List<(string, int)>());

//add 3 people to the second list of tuples
listOf_listOfTuples[1].Add(("Joe", 3));
listOf_listOfTuples[1].Add(("Jake", 4));
listOf_listOfTuples[1].Add(("Jack", 3));

但是你不能像以前那样访问它们,因为在使用集合时它是不合法的 c#;您必须按数字索引列表,而不是名称。如果您想要命名属性访问,则必须从 List 派生并添加属性

【讨论】:

  • 这里不能加(“joe”,没有值)//这是我的目标
  • 呃.. 不,但那是因为它是一个 int,它不能“没有值”,但很容易更改为可以“没有值”的 int?,或者如果您希望完全省略它,则需要将其换成其他东西,例如List&lt;List&lt;Dictionary&lt;string, object&gt;&gt;&gt;,但是当您到达嵌套数据容器的那个级别时,您的设计可能会出错,您需要其他东西
  • 虽然很难理解,但我相信最初的问题是暗示名称和 ID 的数量不匹配。
猜你喜欢
  • 2019-05-31
  • 1970-01-01
  • 2022-11-23
  • 2022-06-17
  • 2021-09-23
  • 2012-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多