我想比较两个系列。我相信我做的很长(代码)。我想找到与另一个集合相比可能在集合中丢失的数字。订单并不重要。
class Program
{
static void Main(string[] args)
{
List< int> x = new List<int>() { 1 };
List< int> y = new List<int>() { 1, 2, 3 };
//find what numbers (if any) that x needs to have in order to have an identical list as y (order not important)
List<int> missingNumbers = new List<int>();
foreach (var number in y)
{
if (!x.Contains(number))
{
missingNumbers.Add(number);
}
}
foreach (var missingNumber in missingNumbers)
{
x.Add(missingNumber);
}
}
}
答案 0 :(得分:4)
只需使用Union扩展方法,如下所示:
// x will contain 1, 2, 3.
// No ducplicate will be added
// and the missing numbers 2 and 3 are added.
x = x.Union(y).ToList();
答案 1 :(得分:2)
如果您想直接组合列表,.Union()
肯定会有用。如果您只想查找一个列表中缺少的值,请执行.Except()
,例如
List<int> x = new List<int>() { 1 };
List<int> y = new List<int>() { 1, 2, 3 };
var result = y.Except(x).ToList();
结果将返回{ 2, 3 }
。如果您想将result
添加到x
,只需执行x.AddRange(result)
。
答案 2 :(得分:1)
这就是诀窍:
x.AddRange(y.Where(num => !x.Contains(num)));