【发布时间】:2022-11-21 15:34:04
【问题描述】:
我有一个List<List<string>> Full,由
for(...){
Full.Add(new List<string>());
Full[ListIndex].Add(string1);
Full[ListIndex].Add(string2);
Full[ListIndex].Add(string3);
...
}
可以阅读
string2 = Full[sublistX][element1];
List<string> Strings包含string2的一些实例
我想创建一个新的 List<List<string> NewList 只包含来自 Full[sublistX][element1] 的子列表,它等于 List<string>Strings 中的任何元素
例如,
List<List<string>> Full will have:
sublist0: "11", "AA", "!!";
sublist1: "22", "BB", "@@";
sublist2: "33", "CC", "##";
sublist3: "44", "DD", "$$";
...
List<string> Strings will have:
"AA", "DD"...
I want the List<List<string> NewList contain:
sublist0: "11", "AA", "!!"; //match "AA"
sublist1: "44", "DD", "$$"; //match "DD"
...
现在,我可能正在以一种愚蠢的方式(硬编码)
List<List<string>> Full;
List<string> Strings;
List<List<string>> NewList;
for (int i = 0; i < Full.Count; i++)
{
if (Strings.Contains(Full[i][4]))
{
NewList.Add(new List<string>());
NewList[ListIndex].Add(Full[i][0]);
NewList[ListIndex].Add(Full[i][1]);
NewList[ListIndex].Add(Full[i][2]);
NewList[ListIndex].Add(Full[i][3]);
NewList[ListIndex].Add(Full[i][4]);
NewList[ListIndex].Add(Full[i][5]);
NewList[ListIndex].Add(Full[i][6]);
NewList[ListIndex].Add(Full[i][7]);
NewList[ListIndex].Add(Full[i][8]);
NewList[ListIndex].Add(Full[i][9]);
ListIndex++;
}
}
我的问题是:有更好的方法吗?
我认为可能有两点需要优化:
- 避免使用
for()遍历整个“Full”列表,尤其是当“Full”包含很多子列表而“Strings”只有很少的元素时。 - 从代码中你可以看到我现在在每个子列表中有 10 个元素,将来可能会增加/减少,但我将
NewList[ListIndex].Add从索引 0 硬编码到 9。有没有办法获得子列表元素的计数?这样我就可以使用for(sublist elements count)添加新列表。
【问题讨论】: