2010-11-12 137 views
0

我在visual studio 2010,visual basic和使用linq有一个奇怪的问题。我的lamda表达式在intellesence中没有出现。我正在开发的项目是在Visual Studio 2008中创建的,我已将其转换为Visual Studio 2010项目。vb.net lambda表达式问题

这里是表达我试图运行:

ClockItemsColl.Filter = ClockItemsColl.AsQueryable().OrderBy(d >= d.Second) 

但是我得到的错误是:

“d”是不是在这种情况下访问,因为它是“朋友” 。

我也曾尝试

ClockItemsColl.Filter = ClockItemsColl.AsQueryable().OrderBy(Function(d As ClockItems) d >= d.Second) 

,但仍产生一个错误,我不能让元首或它的尾巴。

重载决策失败,因为没有可访问的“排序依据”可以用这些参数调用: 扩展方法“公共职能的OrderBy(中TKEY的)(的KeySelectors作为System.Func(BusinessObjects.ClockItems中,TKey))已作为系统.Linq.IOrderedEnumerable(Of BusinessObjects.ClockItems)'在'System.Linq.Enumerable'中定义:运营商'> ='没有为类型'BusinessObjects.ClockItems'和'整数?'定义。 扩展方法'Public Function OrderBy(Of TKey)(keySelector As System.Func(Of BusinessObjects.ClockItems,TKey))作为System.Linq.Enumerable中定义的System.Linq.IOrderedEnumerable(Of BusinessObjects.ClockItems)':Data无法从这些参数中推断出类型参数的类型(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?'类型定义。 扩展方法'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

我相信你想要的是更接近这样的:

ClockItemsColl.Filter = ClockItemsColl.AsQueryable().OrderBy(Function(d) d.Second) 

This site是一个伟大的“去”学习VB LINQ语法。

让我知道是否有其他事情出现。

+0

就是这样,我不确定这是为什么,但它是答案。看起来我正在Linq学习。标记为已回答。 – Robert 2010-11-13 03:47:03