0

我注意到我的代码中存在一个问题,其中 anIEnumerable似乎不包含我想要的所有元素,这是代码(它位于我从中获取的 foreach 内_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() }));

结果:

Result count: 0
{
  "test1": [
    0.0,
    0.0,
    0.0,
    1.0,
    0.0,
    0.0,
    0.0,
    1.0,
    0.0
  ]
}
{
  "test2": [
    0.0,
    0.0,
    0.0,
    1.0,
    0.0,
    0.0,
    0.0,
    1.0,
    0.0
  ]
}
4

1 回答 1

5

你的两个数组不是同一个对象。它们包含相同的对象。使用Enumerable.SequenceEqual而不是operator ==比较引用相等性的 (即变量是否指向相同的内存地址?)。

IEnumerable<Pot> result = pots.Where(e => SignArray(e.PotVal).SequenceEqual(_Lis.ToArray()));
于 2013-06-17T13:36:43.677 回答