C# Asp.Net 内で RavenDB を使用していますが、サブ コレクション内の値で注文する OrderBy の適用に問題があります。私のモデルの基本的な例は次のとおりです。
public class Record
{
public string Id { get; set; }
public string Name {get; set; }
public Field[] Fields { get; set; }
}
public class Field
{
public string Name { get; set; }
public string Value { get; set; }
}
これは RavenDB に次のように保存されます
{
"Name": "A Name Of Somesort"
"Fields": [
{
"Name": "Colour",
"Value": "Red"
},
{
"Name": "Size",
"Value": "Large"
}
]
}
これらの大量のレコードがデータベースに保存されていると想像すると、このデータのページを次のように取得できます
using (var session = documentStore.OpenSession("TestDB"))
{
var result = session.Query<Record>().Skip(0).Take(10).ToList();
}
私がやりたいことは、フィールド値に基づいてレコードをソートできるようにすることです (たとえば、「色」という名前のフィールドの値でレコードをソートします)
編集:
さらに説明するために、私が達成したいことは以下のようなものですが、これは RavenDB では許可されていないため、別の方法を見つける必要があります (可能であれば)。
using (var session = documentStore.OpenSession("TestDB"))
{
var result = session.Query<Record>()
.OrderBy(v => v.Fields.First(f => f.Name == "Colour").Value)
.Skip(0)
.Take(10)
.ToList();
}
これにより、次のメッセージとともに新しい ArgumentException がスローされます
Invalid computation: v.Fields.First(f => (f.Name == "Colour")).Value. You cannot use computation (only simple member expression are allowed) in RavenDB queries.