Roy*_*mir 3 c# linq ienumerable .net-4.0
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;
Run Code Online (Sandbox Code Playgroud)
grouped 类型是: System.Linq.GroupedEnumerable<ConsoleApplication15.Fruit,string,ConsoleApplication15.Fruit>
看看它: 
我的问题 :
如果分组包含项目(实现不可数) - 为什么它的类型 GroupedEnumerable
而不是
IEnumerable <System.Linq.IGrouping<string,ConsoleApplication15.Fruit>>
Run Code Online (Sandbox Code Playgroud)
他们为什么要创建一个新的Type GroupedEnumerable?
如果.Net中有一个对象,它必须是某种具体类型,它不能是一个接口.因此,例如,new IList<int>()无效,你必须做类似的事情new List<int>().
如果你有一个变量,它的类型可以是一个接口,所以你可以编写,例如IList<int> list = new List<int>().
而这正是这里发生的事情.变量 的类型grouped是IEnumerable<IGrouping<string,Fruit>>(虽然从代码中不清楚,因为你正在使用var).该变量引用的对象的GroupedEnumerable<Fruit, string, Fruit>类型是实现使用的内部类型GroupBy().它不可能IEnumerable,因为你不能拥有一个接口的实例.
Visual Studio调试器向您显示对象的运行时类型,因为这是调试器的用途:向您显示运行时信息.
| 归档时间: |
|
| 查看次数: |
2235 次 |
| 最近记录: |