我在visual studio 2010,visual basic和使用linq时遇到了一个奇怪的问题。我的lamda表达不会出现在智慧中。我正在开发的项目是在visual studio 2008中创建的,我已将其转换为Visual Studio 2010项目。
这是我试图运行的表达式:
ClockItemsColl.Filter = ClockItemsColl.AsQueryable().OrderBy(d >= d.Second)
然而,我得到的错误是:
'd'在此上下文中无法访问,因为它是“朋友”。
我也试过
ClockItemsColl.Filter = ClockItemsColl.AsQueryable().OrderBy(Function(d As ClockItems) d >= d.Second)
但仍然会产生错误,我无法做出正面或反面。
重载解析失败,因为无法使用以下参数调用可访问的“OrderBy”: 扩展方法'Public Function OrderBy(Of TKey)(keySelector As System.Func(Of BusinessObjects.ClockItems,TKey))As System.Linq.IOrderedEnumerable(Of BusinessObjects.ClockItems)'在'System.Linq.Enumerable'中定义:运算符' > ='没有为类型'BusinessObjects.ClockItems'和'Integer?'定义。 扩展方法'Public Function OrderBy(Of TKey)(keySelector As System.Func(Of BusinessObjects.ClockItems,TKey))As System.Linq.IOrderedEnumerable(Of BusinessObjects.ClockItems)'在'System.Linq.Enumerable'中定义:数据类型(s)类型参数不能从这些参数中推断出来。明确指定数据类型可能会更正此错误。 扩展方法'Public Function OrderBy(Of TKey)(keySelector As System.Linq.Expressions.Expression(Of System.Func(Of BusinessObjects.ClockItems,TKey))))作为System.Linq.IOrderedQueryable(Of BusinessObjects.ClockItems)'中定义的'System.Linq.Queryable':没有为类型'BusinessObjects.ClockItems'和'Integer?'定义Operator'> ='。 扩展方法'Public Function OrderBy(Of TKey)(keySelector As System.Linq.Expressions.Expression(Of System.Func(Of BusinessObjects.ClockItems,TKey))))作为System.Linq.IOrderedQueryable(Of BusinessObjects.ClockItems)'中定义的'System.Linq.Queryable':无法从这些参数推断出类型参数的数据类型。明确指定数据类型可能会更正此错误。
我正在使用实体空间与我的数据层接口,这是我第一次使用Linq,所以我正在经历一些成长的痛苦。
感谢您的时间。
答案 0 :(得分:0)
我相信你想要的更接近这个:
ClockItemsColl.Filter = ClockItemsColl.AsQueryable().OrderBy(Function(d) d.Second)
This site非常适合学习VB linq语法。
如果有其他事情发生,请告诉我。