Я сталкивался с этим во время игры с LINQ to SQL и, похоже, не вижу его в свете, который имеет какой-либо смысл. У меня есть IQueryable как:
var personnel = from p in dc.Resources select p;
var p1 = personnel.FirstOrDefault();
var p2 = personnel.FirstOrDefault();
objec.ReferenceEquals(p1,p2);
Приведенный выше вызов ReferenceEquals () каждый раз оценивается как ложный (как мне кажется, так должно быть, поскольку новый вызов T-SQL генерируется для каждого вызова FirstOrDefault ()). Тем не менее, у меня также есть другой IQueryable (другая таблица в той же базе данных), как:
var accounts = from a in dc.Accounts select a;
var a1 = accounts.FirstOrDefault();
var a2 = accounts.FirstOrDefault();
object.ReferenceEquals(a1,a2);
на этот раз вызов ReferenceEquals () каждый раз обнуляется ... есть идеи, как это возможно? (Примечание: я проверил, чтобы все a1, a2, p1 и p2 оценивали свои соответствующие классы, а не ноль).