2009-05-13 7 views
3

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 

答えて

2

私は肯定的ではないが、私はそれはそれは期待するものである式(TDelegate)とは対照的に、あなたは[並べ替えに文字列を渡しているという事実に関係していと思います。

この記事を見て、役立つかどうかを確認してください。

http://msdn.microsoft.com/en-us/library/bb549264.aspx

編集:

私はフィルのコードでスコット区が提供するいくつかの詳細なドキュメントを見て撮影しました。あなたは注文する文字列を渡すことができるはずです。それはあなたのアプリが動くかどうかによって注文を取り出すなら、私の次の質問でしょうか?この理由は、私たちが欠けているもう一つの基礎的なエラーがあるのだろうかと思います。たとえばJSON(jsondata)を返すのと同じように、jsondataをどこで初期化しているのかわかりません。今私はあなたがorderbyステートメントでそれを取得しているというあなたのエラーだとは思わない。しかし、あなたが注文しようとしているオブジェクトが空であるため実際にエラーが発生している場合は、別の根本的な問題があります。

+0

のために働いたと私は[並べ替え(関数(x)のx.FirstName)のような表現を使用する場合は、この作業を行いますが、フィルからのポストに - どのように彼はすることができますc#を使用して文字列を渡してください。しかし、同じアプローチでは有効な式が必要ですか? –

+0

簡潔にするためreturn文の前にコードの大部分を省略しました。私が次のものを使うとうまくいくので、他の何かが壊れているとは思わない。あなたのUserオブジェクトのプロパティにsidx + "" sordを翻訳しようとしているように見えるように、 –

+0

を返すようにしましょう。 "#:。msgstr" 。私は見て、sidx + "+ sordが本当にプロパティに直接変換できるかどうかを見てみましょう。 –

関連する問題