vb.net проблема лямбда-выражения

У меня странная проблема в Visual Studio 2010, Visual Basic и использовании linq. Мои лямда-выражения не отображаются в интеллекте. Проект, над которым я работаю, был создан в 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' не может быть вызван с этими аргументами: Метод расширения 'Общедоступная функция OrderBy(Of TKey)(keySelector As System.Func(Of BusinessObjects.ClockItems, TKey)) As System.Linq.IOrderedEnumerable(Of BusinessObjects .ClockItems)», определенный в «System.Linq.Enumerable»: оператор «>=» не определен для типов «BusinessObjects.ClockItems» и «Integer?». Метод расширения «Открытая функция OrderBy (Of TKey) (keySelector As System.Func (Of BusinessObjects.ClockItems, TKey)) As System.Linq.IOrderedEnumerable (Of BusinessObjects.ClockItems)», определенный в «System.Linq.Enumerable»: Тип данных (s) параметра(ов) типа нельзя вывести из этих аргументов. Явное указание типов данных может исправить эту ошибку. Метод расширения «Открытая функция OrderBy (Of TKey) (keySelector As System.Linq.Expressions.Expression (Of System.Func (Of BusinessObjects.ClockItems, TKey))) As System.Linq.IOrderedQueryable (Of BusinessObjects.ClockItems)», определенный в «System.Linq.Queryable»: оператор «>=» не определен для типов «BusinessObjects.ClockItems» и «Integer?». Метод расширения «Открытая функция OrderBy (Of TKey) (keySelector As System.Linq.Expressions.Expression (Of System.Func (Of BusinessObjects.ClockItems, TKey))) As System.Linq.IOrderedQueryable (Of BusinessObjects.ClockItems)», определенный в «System.Linq.Queryable»: тип(ы) данных параметра(ов) типа не может быть выведен из этих аргументов. Явное указание типов данных может исправить эту ошибку.

Я использую пространство сущностей для взаимодействия с моим уровнем данных, и это первый раз, когда я использую Linq, поэтому я испытываю некоторые трудности роста.

Спасибо за ваше время.


person Robert    schedule 12.11.2010    source источник


Ответы (1)


Я считаю, что вы хотите ближе к этому:

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

Этот сайт отлично подходит для изучения синтаксиса VB linq.

Дайте мне знать, если что-нибудь еще появится.

person diceguyd30    schedule 12.11.2010
comment
Вот и все, я точно не знаю, почему именно так, но это был ответ. Похоже, мне нужно много учиться в Linq. Помечено как ответ. - person Robert; 13.11.2010