Adding list of strings from one list to another list
我有一个外部列表biglist,然后在switch语句中,我有一组其他的列表小列表变量。当我在交换机中处理这些情况时,我想把它们添加到biglist中。但我也不想添加重复的。我们怎么做?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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 |
如果不允许重复,我会首先使用
1 2 |
如果要将整个
1 2 | case"dsdds": bigSet.UnionWith(smallerList); |
如果需要返回列表,可以使用
1 |
嗯,也许有一种更有效的方法来做你想做的事情,但是根据你所展示的,你可以:
查找父列表中不存在的字符串:
1 | BigList.AddRange(smallerList.Except(BigList)); |
或者把它们全部加起来(允许重复),然后在末尾调用
1 2 3 4 5 6 | BigList.AddRange(smallerList); ... ///add other lists BigList = BigList.Distinct().ToList(); |
另外,您可能应该将您的列表初始化为空列表,而不是
1 |
要基于另一个列表的唯一值创建新列表,请执行以下操作:
1 | List<string> BigList = MyListOfStringsThatComesIn.Distinct().ToList(); |
要从其他列表添加新的唯一值:
1 2 | //assume the BigList contains something already... BigList.AddRange(BigList.Except(MyListOfStringsThatComesIn)); |