Информация об изменениях

Сообщение Анонимные типы от 07.03.2017 6:28

Изменено 07.03.2017 18:09 VladD2

Анонимные типы
Есть вот такой код простой


class Program
{
static void Main(string[] args)
{
var list1 = new List<object>();
var list2 = new List<object>();

list1.Add(new { Age = 55, FirstName = "Petr", SureName = "ivanov", width = (int?)null });
list1.Add(new { Age = 551, FirstName = "Petr", SureName = "ivanov2", width = (int?)null });
list2.Add(new { Age = 55, FirstName = "Petr", SureName = "ivanov", width = (int?)null });

var names = list1.Select(a => a).Union(list2.Select(b => b));

Console.ReadKey();
}
}


почему names содержит 2 элемента, а не 3? Ведь разные ссылки у всех элементов?
и Если я сделаю не анонимные типы, а класс с полями, то тогда будет 3 элемента.
Анонимные типы
Есть вот такой код простой


    class Program
    {
        static void Main(string[] args)
        {
            var list1 = new List<object>();
            var list2 = new List<object>();

            list1.Add(new { Age = 55, FirstName = "Petr", SureName = "ivanov", width = (int?)null });
            list1.Add(new { Age = 551, FirstName = "Petr", SureName = "ivanov2", width = (int?)null });
            list2.Add(new { Age = 55, FirstName = "Petr", SureName = "ivanov", width = (int?)null });
                       
            var names = list1.Select(a => a).Union(list2.Select(b => b));
            
            Console.ReadKey();
        }   
    }




почему names содержит 2 элемента, а не 3? Ведь разные ссылки у всех элементов?
и Если я сделаю не анонимные типы, а класс с полями, то тогда будет 3 элемента.