将字符串列表从一个列表添加到另一个列表

本文关键字:列表 一个 添加 另一个 字符串 | 更新日期: 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.AddHashSet.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>();