c#Linq’s – GroupedEnumerable用法?
Fruit[] data = new[] { new Fruit {Name = "Gala",Type = "Apple",Price = 0.75m,Quantity = 10}, new Fruit {Name = "Granny Smith",Type = "Apple",Price = 0.80m,Quantity = 7}, new Fruit {Name = "Tasty",Type = "Strawberries",Price = 1.90m,Quantity = 20} }; var grouped = from fruit in data group fruit by fruit.Type;
grouped
类型是: System.Linq.GroupedEnumerable
看看它:
我的问题 :
如果分组包含项目(实现可发生的) – 为什么它的类型是GroupedEnumerable
而不是
IEnumerable <System.Linq.IGrouping>
为什么他们创建了一个新的Type GroupedEnumerable
?
如果.Net中有一个对象 ,它必须是某种具体类型,它不能是一个接口。 因此,例如, new IList
无效,您必须执行类似new List
。
如果你有一个变量 ,它的类型可以是一个接口,所以你可以编写,例如, IList
。
而这正是这里发生的事情。 grouped
变量的类型是IEnumerable
(虽然从代码中不清楚,因为你使用的是var
)。 该变量引用的对象类型是GroupedEnumerable
,它是GroupBy()
实现使用的内部类型。 它不能是IEnumerable
,因为你不能拥有一个接口的实例。
Visual Studio调试器向您显示对象的运行时类型,因为这是调试器的用途:向您显示运行时信息。