- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
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<ConsoleApplication15.Fruit,string,ConsoleApplication15.Fruit>
看看它:
我的问题:
如果分组包含项目(实现 ienumerable)- 为什么它的类型是 GroupedEnumerable
并且不是
IEnumerable <System.Linq.IGrouping<string,ConsoleApplication15.Fruit>>
他们为什么要创建一个新类型又名 GroupedEnumerable
?
最佳答案
如果您在 .Net 中有一个对象,它必须是某种具体类型,它不能是一个接口(interface)。因此,例如 new IList<int>()
无效,您必须执行类似 new List<int>()
的操作.
如果你有一个变量,它的类型可以是一个接口(interface),所以你可以这样写,例如IList<int> list = new List<int>()
.
这正是这里发生的事情。 变量的类型 grouped
是IEnumerable<IGrouping<string,Fruit>>
(尽管从代码中看不清楚,因为您使用的是 var
)。该变量引用的对象 的类型是GroupedEnumerable<Fruit, string, Fruit>
,这是 GroupBy()
的实现使用的内部类型.不可能是IEnumerable
,因为您不能拥有接口(interface)的实例。
Visual Studio 调试器向您显示对象的运行时类型,因为这就是调试器的用途:向您显示运行时信息。
关于c# Linq 的 - GroupedEnumerable 用法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10461882/
我正在尝试使用 IQueryProvider.Execute 命令并传入一个表达式,该表达式是我的表达式树项目的一部分。此命令返回一个对象,该对象可以是 OrderedEnumerable 或 Gro
Fruit[] data = new[] { new Fruit {Name = "Gala",Type = "Apple",Price = 0.75m,Quantit
我有这样的类(class)。 public static SkillViewModel GetAllList(string ID) { ListViewModel viewModel = n
我是一名优秀的程序员,十分优秀!