IEnumerable.Where缺少对象

时间:2013-06-17 13:33:49

标签: c# linq ienumerable where equality

我注意到我的代码中存在一个问题,其中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() }));

1 个答案:

答案 0 :(得分:5)

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

IEnumerable<Pot> result = pots.Where(e => SignArray(e.PotVal).SequenceEqual(_Lis.ToArray()));