Phil Haack hereの最終的なソリューションを使用し、killer LINQクエリを使用して並べ替えることを試みていますが、私はIEnumerable(Of T)に対してクエリを行いたいです...運がない。IEnumerable(Of T)を使用してSystem.LINQ.Dynamicアセンブリを使用する方法
Public Function DynamicGridData(ByVal sidx As String, ByVal sord As String, ByVal page As Integer, ByVal rows As Integer) As ActionResult
Dim list As List(Of User) = UserService.GetUserCollection()
Dim FilteredAndSortedList = list.OrderBy(sidx + " " + sord).Skip(pageIndex * pageSize).Take(pageSize)
Return JSON(jsonData)
End Function
現在、私は私の.OrderBy(SIDX + "" + SORD)ライン
「拡張メソッド「パブリック・ファンクションのOrderByでtehの型パラメータ(複数可)のデータ型(S)(以下のエラーが表示されますSystem.Linq.Enumerableで定義されているSystem.Linq.IOrderedEnumerable(Of User)がこれらの引数から推測できないため、データ型を指定すると、明示的にこのエラーを修正する可能性があります。
EDIT:
私は、上記の例では、私の「リスト」タイプのIQueryableのではなかったという問題があることが判明。 .AsQueryable()を追加するだけでトリックが行われました!
Public Function DynamicGridData(ByVal sidx As String, ByVal sord As String, ByVal page As Integer, ByVal rows As Integer) As ActionResult
Dim list As List(Of User) = UserService.GetUserCollection()
Dim FilteredAndSortedList = list.AsQueryable().OrderBy(sidx + " " + sord).Skip(pageIndex * pageSize).Take(pageSize)
Return JSON(jsonData)
End Function
のために働いたと私は[並べ替え(関数(x)のx.FirstName)のような表現を使用する場合は、この作業を行いますが、フィルからのポストに - どのように彼はすることができますc#を使用して文字列を渡してください。しかし、同じアプローチでは有効な式が必要ですか? –
簡潔にするためreturn文の前にコードの大部分を省略しました。私が次のものを使うとうまくいくので、他の何かが壊れているとは思わない。あなたのUserオブジェクトのプロパティにsidx + "" sordを翻訳しようとしているように見えるように、 –
を返すようにしましょう。 "#:。msgstr" 。私は見て、sidx + "+ sordが本当にプロパティに直接変換できるかどうかを見てみましょう。 –