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

时间:2014-06-02 14:09:57

标签: c#

我有一个外部List BigList,然后在我的switch语句中我有一堆其他List的smallList变量。 当我在我的交换机中遇到这些情况时,我想将它们添加到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

3 个答案:

答案 0 :(得分:4)

如果不允许重复,我会首先使用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);

答案 1 :(得分:1)

根据另一个的唯一值创建新列表:

List<string> BigList = MyListOfStringsThatComesIn.Distinct().ToList();

要从其他列表添加新的唯一值:

//assume the BigList contains something already...
BigList.AddRange(BigList.Except(MyListOfStringsThatComesIn));

答案 2 :(得分:1)

嗯,这可能是一种更有效的方式来做你想要的,但根据你所展示的内容,你可以:

查找不存在于父列表中的字符串:

BigList.AddRange(smallerList.Except(BigList));

或者只是将它们全部添加(允许重复)并在结尾处调用Distinct

BigList.AddRange(smallerList);
...
///add other lists


BigList = BigList.Distinct().ToList();

此外,您可能应该将列表初始化为空列表,而不是null

List<string> BigList = new List<string>();