将字符串列表从一个列表添加到另一个列表
本文关键字:列表 一个 添加 另一个 字符串 | 更新日期: 2023-09-27 18:06:18
我有一个外部列表BigList,然后在我的switch语句中我有一堆其他列表smallerList变量。当我到达交换机中的每一个案例时,我想把它们添加到BigList中但我也不想加上重复的。我们怎么做呢?
private List<string> MyMethod()
{
List<string> BigList = null;
for each( string name in MyListOfStringsThatComesIn)
{
tName = name;
switch(tName)
{
case "dsdds":
// List<string> smallerList;
// add it to BigList
case "fdfdf":
// List<string> smallerList2;
// add it to BigList
case "vbbughb":
// List<string> smallerList3;
// add it to BigList
如果不允许重复,我将首先使用HashSet<string>
:
HashSet<string> bigSet = new HashSet<string>();
// add strings ...
如果您想将整个List<string>
添加到集合中,您可以在循环中使用bigSet.Add
或HashSet.UnionWith
:
case "dsdds":
bigSet.UnionWith(smallerList);
如果你需要返回一个列表,你可以使用
return new List<string>(bigSet);
根据另一个列表的唯一值创建一个新列表:
List<string> BigList = MyListOfStringsThatComesIn.Distinct().ToList();
从另一个列表中添加新的唯一值:
//assume the BigList contains something already...
BigList.AddRange(BigList.Except(MyListOfStringsThatComesIn));
也许有一种更有效的方法来做你想做的事情,但是根据你所展示的,你可以:
查找父列表中不存在的字符串:
BigList.AddRange(smallerList.Except(BigList));
或者只是将它们全部添加(允许重复)并在末尾调用Distinct
:
BigList.AddRange(smallerList);
...
///add other lists
BigList = BigList.Distinct().ToList();
另外,您可能应该将列表初始化为空列表,而不是null
:
List<string> BigList = new List<string>();