Прошу объяснить причину неравенства значений, при сравнении оператором ==
var table = new System.Data.DataTable("Nodes"); var idColumn = new System.Data.DataColumn("Id") { DataType = typeof(int), AutoIncrement = true, AutoIncrementSeed = 1, AutoIncrementStep = 1 }; table.Columns.Add(idColumn); for (int i = 0; i < 2; i++) { table.Rows.Add(table.NewRow()); } var tableRow = table.AsEnumerable().Last(); var row = table.AsEnumerable().FirstOrDefault(curRow => { var x = curRow["Id"]; var y = tableRow["Id"]; Console.WriteLine($ "Types: {x.GetType()} and {y.GetType()}"); Console.WriteLine($ "{x} == {y} is {x == y}"); Console.WriteLine($ "{x} Equals {y} is {x.Equals(y)}"); Console.WriteLine(); return x.Equals(y); });
Результат:
Types: System.Int32 and System.Int32 1 == 2 is False 1 Equals 2 is False Types: System.Int32 and System.Int32 2 == 2 is False 2 Equals 2 is True