c# - 用于按特定集列表排序的 LINQ 查询

标签 c# linq sql-order-by

我正在开发一个小音乐应用程序,我正在其中填写一个下拉列表。

我的问题出在我在这里运行的 LINQ 查询中:

var results = (from x in db.Keys
               where x.SongId == songId
               orderby x.ChordKey ascending
               select x.ChordKey).ToList();

我的 ChordKey 值始终是:

Ab, A, Bb, B, C, C#, Db, D, Eb, E, F, F#, Gb, G

我希望它们按照上面的顺序排列,不幸的是,如果按字母顺序排列,A 将出现在 Ab 之前,等等。有没有办法按照上面的具体标准来订购?

最佳答案

对具有基础整数值的键使用枚举,以您想要的方式排序。

public enum ChordKey 
{Ab=1, A=2, Bb=3, B=4, C=5, 
 Db=6, D=7, Eb=8, E=9, 
 F=10, Gb=11, G=12}

然后

var results = (from x in db.Keys
           where x.SongId == songId
           orderby (int)x.ChordKey ascending
           select x.ChordKey).ToList();

关于c# - 用于按特定集列表排序的 LINQ 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39243058/

相关文章:

c# - 我如何使用 LINQ 从多表连接中获取 IList<string>?

c# - 使用 Queryable 代替扩展方法

mysql - 使用子查询进行奇怪的排序

zend-framework2 - 在 ZF2 中将组合和排序与表网关一起使用

sql - 使用 SELECT...WHERE id IN (...),按 IN() 排序结果?

c# - 应用程序更新时的 UWP BackgroundTask

c# - 进行链式空检查的优雅方式

c# - 为什么这个字符串格式不是货币?

c# - 气隙 .NET 代码签名应用程序将无法安装/运行

c# - 为 2 个链接表创建模型的 ASP.Net MVC 错误