RavenDB へのクエリを作成するときに、Enum を Sort または OrderBy することは可能ですか? 多分 IComparable を与えることによって?
試してみましたが、列挙型が文字列であるかのように注文するようで、列挙型を整数として格納することはできません。
簡単な例を次に示します。
public class Car
{
public long Id { get; set; }
public int NumberOfDoors { get; set; }
public int MaxSpeed { get; set; }
public Classification Classification { get; set; }
}
public enum Classification
{
Compact,
Hatch,
Convertible,
Muscle
}
マッスル、コンパクト、ハッチ、コンバーチブルの順で分類して注文したいと思います。また、列挙型を再配置して列挙型を整数として保存する必要は避けたいと思います。
私はこれを試しましたが、うまくいかないようです:
//My query
var cars = session.Query<Car>()
.OrderBy(c => c.Classification , new ClassificationComparer())
.Skip(offset)
.Take(size);
public class ClassificationComparer: IComparer<Classification>
{
public int Compare(Classification x, Classification y)
{
return Order(x).CompareTo(Order(y));
}
private int Order(Classification classification)
{
switch (classification)
{
case Classification.Compact:
return 0;
case Classification.Hatch:
return 1;
case Classification.Convertible:
return 2;
case Classification.Muscle:
return 3;
default:
return int.MaxValue;
}
}
}
どんな助けでも大歓迎です。