全て...
NuGet と MVC 3 を使用した RavenDB 組み込みの最新の安定ビルドを使用しています。
public JsonResult GetStudents(GridFilter filter)
{
using (var session = _store.OpenSession())
{
var students = session.Query<Student>();
students.OrderBy(x => x.FirstName);
return Json(students.ToList());
}
}
このコードは壊れません。また、Student.FirstName では並べ替えられません。RavenQueryInspector (学生のコレクションにマウスを合わせる) を調べたところ、次のことがわかりました...
AsyncDatabaseCommands = '(((Raven.Client.Linq.RavenQueryInspector<UMA.KendoGrid.Entities.Student>)(students))).AsyncDatabaseCommands' threw an exception of type 'System.NotSupportedException'
私が行った場合
var students = from x in session.Query<Student>()
orderby x.FirstName descending
select x;
それはうまくいきます。まず、長いlinq構文を使用するとラムダを使用すると失敗する理由がわかりません。私が本当に必要としているのは、並べ替え機能のあるグリッドを使用しているため、任意のフィールドで学生をフィルタリングすることです。Microsoft の System.Linq.Dynamic ファイルを使用して、文字列名で並べ替えたいと思います。これにより、並べ替えコレクションで渡されたフィールドで並べ替えることができます。
しかし、始める前に、自分のバージョンの RavenDB 組み込みでラムダ式を使用できない理由を理解する必要があると思います。誰でも助けることができますか?