我注意到我的代码中存在一个问题,其中IEnumerable
似乎不包含我想要的所有元素,这里是代码(它位于foreach内部,这是我得到{{1}的地方来自):
_Lis
结果:
IEnumerable<Pot> result = pots.Where(e => SignArray(e.PotVal) == _Lis.ToArray());
Console.WriteLine("Result count:" + result.Count());
Console.WriteLine(JObject.FromObject(new { test1 = SignArray(pots[0].PotVal) }));
Console.WriteLine(JObject.FromObject(new { test2 = _Lis.ToArray() }));
答案 0 :(得分:5)
您的两个数组不是同一个对象。它们包含相同的对象。使用Enumerable.SequenceEqual
代替operator ==
,比较参考相等性(即变量是否指向相同的内存地址?)。
IEnumerable<Pot> result = pots.Where(e => SignArray(e.PotVal).SequenceEqual(_Lis.ToArray()));