Is it possible to sort IQueryable
by indexes of other list, without cast to IEnumerable
. Entity Framework and Linq can't translate it to SQL query. I also tried Dictionary<int, Enum>
and function which returns int order.
And I don't want enum values.
Example:
public enum Letter
{
A = 0,
B = 1,
C = 2
}
public class MyClass
{
public Letter LetterEnum { get; set; }
public DateTime Date { get; set; }
}
public IQueryable<MyClass> Sort(IQueryable<MyClass> data)
{
List<Letter> preferredOrder = new List<Letter> { Letter.B, Letter.C, Letter.A };
return data.OrderBy(x=> preferredOrder.IndexOf(x.LetterEnum)).ThenBy(x=> x.Date);
}