これを機能させたい:
DBSet コンストラクター:
dbset = DataContext().[Set](Of T)()
呼び出し: (Count & Page はページネーションに使用されるため、たとえば、最初の 20 の値については Count = 20 および Page = 1 です)。並べ替えは名前で行う必要があります
LeverancierService.GetLeveranciers(Function(el) el.Name, Count, Page)
C# で同等: LeverancierService.GetLeveranciers(el=> el.Name, Count, Page)
エラーが発生するメソッド (上記のパラメーター):
Public Overridable Function GetAllPaged(orderby As Expression(Of Func(Of T, IComparable)), ByVal Count As Integer, ByVal Page As Integer) As IEnumerable(Of T)
Return dbset.OrderBy(orderby).Skip((Page - 1) * Count).Take(Count).ToList()
End Function
すでにこれに変更しようとしましたが、同じエラーが発生します:
Public Overridable Function GetAllPaged(Of TOrderBy)(orderby As Expression(Of Func(Of T, TOrderBy)), ByVal Count As Integer, ByVal Page As Integer) As IEnumerable(Of T)
Return dbset.OrderBy(orderby).Skip((Page - 1) * Count).Take(Count).ToList()
End Function
エラー:
Unable to cast the type 'System.String' to type 'System.IComparable'. LINQ to Entities only supports casting Entity Data Model primitive types.
これを行う方法はありますか?
追加情報:
私はDDD層のアプリケーションにいるので、呼び出されたメソッドがオーバーライドされたインターフェースであるため、パラメーターは同じままにする必要があります(たとえば、これを変更すると、VB.Netにあるため、これを200回ほど実行する必要がありますC# ではない (= 1 つの変更) )