C# 哪里是EntitySet<;T>';s";结果视图;?
当查看LINQ到SQL映射实体的链接C# 哪里是EntitySet<;T>';s";结果视图;?,c#,linq-to-sql,iqueryable,entityset,debuggervisualizer,C#,Linq To Sql,Iqueryable,Entityset,Debuggervisualizer,当查看LINQ到SQL映射实体的链接EntitySet时,我看到以下内容: 我希望看到以下内容(通过使用.AsQueryable()扩展方法实现),以便单击小刷新图标查看内容: 为什么我不能在普通的EntitySet上查看结果视图 另外,我注意到上面写着: 在LINQ to SQL中,EntitySet类实现了IQueryable接口 在我看来,EntitySet既不是从IQueryable继承的,也不是从IQueryable继承的。那么,这种说法是怎么回事呢?您引用的页面上的术语可能有点不
EntitySet
时,我看到以下内容:
我希望看到以下内容(通过使用.AsQueryable()
扩展方法实现),以便单击小刷新图标查看内容:
为什么我不能在普通的EntitySet
上查看结果视图
另外,我注意到上面写着:
在LINQ to SQL中,EntitySet
类实现了IQueryable
接口
在我看来,
EntitySet
既不是从IQueryable
继承的,也不是从IQueryable
继承的。那么,这种说法是怎么回事呢?您引用的页面上的术语可能有点不正确-因为EntitySet和IQueryable都源自IEnumerable,如果EntitySet直接实现IQueryable,那么实现IEnumerable将是多余的
AsQueryable()所做的是将EntitySet转换为EnumerableQuery(如第二幅图像所示),并且只有在转换完成后才能看到结果视图
由于EntitySet只从IEnumerable派生,这是有意义的,因为枚举数不返回集合,而是按顺序返回集合中单个成员的引用。您将找到答案 “结果”视图仅适用于 符合以下条件的集合 条件
您可以在另一个问题的答案中阅读更多关于#2的内容。请注意,谢谢!我只是想知道Jared说了什么:“每个已知的
IList/
和ICollection
类型都已经有了一个方法,可以让您查看内容”-EntitySet
必须是一个例外-它没有任何方便的方式来查看内容,只能深入到非公共成员
部分或将其转换为另一种类型。@Allon Guralnek我想他们说的是使用运算符[]按索引访问项目。您是对的,为了在调试器中查看列表,您必须深入到内部,但是使用IEnumerable,列表可能是完整的运行时生成的,除非调用它,否则深入到内部不会告诉您它将返回什么。