是否可以通过其他列表的索引对IQueryable进行排序,而不强制转换为IEnumerable。Enitity Framework和Linq无法将其转换为SQL Query。我还尝试了Dictionary<int,Enum>和返回int顺序的函数。我不想要枚举值。示例:
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> prefferedOrder = new List<Letter> { Letter.B, Letter.C, Letter.A };
return data.OrderBy(x=> prefferedOrder.IndexOf(x.LetterEnum)).ThenBy(x=> x.Date);
}
3条答案
按热度按时间goqiplq21#
如果是SQL问题,我建议使用
case
表达式。在linq中,你可以这样写:生成的SQL:
ggazkfy82#
可以动态构建排序查询:
从原理上讲,它将生成以下内容:
t9aqgxwy3#
动态顺序
根据您指定的列表,它们将创建一个排序