var products1 = new List<Product> {
new Product { Name = "Apple", Price = 2 }};
var products2 = from product in products1
select new { product.Name, product.Price };
foreach (var p in products1)
Console.WriteLine(p);
foreach (var p in products2)
Console.WriteLine(p);
为什么第二个打印“{Name = Apple,Price = 2}”?
答案 0 :(得分:3)
为什么第二个打印“{Name = Apple,Price = 2}”?
由于您使用new
关键字创建了匿名类型,因此与Product
类型不同。
由于您致电Console.WriteLine(p);
,相当于:
Console.WriteLine(p.ToString());
您可能会看到:C#/.NET Little Wonders: The Joy of Anonymous Types
匿名类型的ToString()
匿名类型为您提供的一个更简单的覆盖 是一个ToString()方法,打印匿名类型的值 实例的格式与初始化的格式大致相同(除了 当然,实际值而不是表达式。
答案 1 :(得分:2)
您正在创建一个实现自己的ToString
方法的匿名类型。
答案 2 :(得分:1)
这不是LINQ,而是C#编译器为匿名类型生成ToString
的方式。