У меня есть класс коллекции, который является оберткой для
List(Of MyClass)
И класс коллекции реализует такие вещи, как сложение, подсчет и т. Д.
Private lst As List(Of MyClass)
Public Function Count() As Long
Return lst.Count
End Function
Я хочу добавить возможностьделать запросы Linq на классе коллекции.Таким образом, клиент может сделать что-то вроде этого:
dim c as New MyCollectionClass
c.Add(New MyClass With {.Name = "XXX"})
c.Add(New MyClass With {.Name = "XXX"})
c.Add(New MyClass With {.Name = "YYYY"})
Dim nc As MyCollectionClass = c.GroupBy(function(x) x.Name)
Как мне реализовать функцию groupby и все другие функции Linq (select, filter, Different, orderby и т. Д.)?Я реализовал iQueryable в классе.
Я запутался в том, как объявить его, его параметры, реализацию и т. Д. Я пробовал несколько вещей, таких как
Public Function GroupBy(f As Func(Of MyClass)) As IEnumerable
Return lst.GroupBy(Function(x As MyClass) f(x))
End Function
Но этопросто синтаксическая ошибка, и я просто застрял сейчас :) спасибо
FWIW это то, что я сделал для Iqueryable:
Implements IEnumerable, IQueryable
Private lst As New List(Of MyClass)
Public ReadOnly Property Expression As Expression Implements IQueryable.Expression
Get
Return lst.AsQueryable.Expression
End Get
End Property
Public ReadOnly Property ElementType As Type Implements IQueryable.ElementType
Get
Return lst.AsQueryable.ElementType
End Get
End Property
Public ReadOnly Property Provider As IQueryProvider Implements IQueryable.Provider
Get
Return lst.AsQueryable.Provider
End Get
End Property