Linq包含不处理从Single方法检索的对象

时间:2015-07-12 17:53:13

标签: c# linq contains

我有一个类型为Well的简单集合,其中还包含数据集

我从井集中获取数据集对象,如此

var dataset = well.Datasets.Single(u=> u.ID == datasetID);
if (dataset!=null)
{
   well.Datasets.Contains(dataset);// returns false here
}

根据我的理解包含在这里假设在前一个语句中返回true我从同一个集合中获取此对象。

为什么它返回false?

1 个答案:

答案 0 :(得分:1)

这种情况正在发生,因为您正在尝试搜索自定义对象。所以这里的比较不是基于价值的比较。对于C#编译器,您可以从

获取对象
  

var dataset = well.Datasets.Single(u => u.ID == datasetID);

well 变量中的对象不同。

为了更好地理解,请检查对象比较在C#中的工作原理。