如果我有这样的结构
Albums
- Album
- Discs
- Tracks
我想按第一张光盘上第一首轨道的标题来订购一组专辑。
是否有类似于以下我可以做的事情(记住我需要使用接受字符串的 OrderBy 扩展方法)?
albums.OrderBy("Discs[0].Tracks[0].Title")
我需要能够使用字符串表达式进行排序,因此需要使用 OrderBy 方法,即 albums.OrderBy("Track[0].Title")。这样做的原因是我们的自定义框架使用从 GridView 传回的排序表达式(例如“Title”),它在字典中查找(例如“Track[0].Title”)以获得正确的子句顺序。也就是说,排序的字段和方向是在运行时动态确定的。
或
albums.OrderBy("Discs.First().Tracks.First().Title")
最佳答案
未经测试,但怎么样:
var query = from album in albums
let disc = album.Discs.First()
let track = disc.Tracks.First()
orderby track.Title
select album;
关于c# - 将 [0] 或 First() 与 LINQ OrderBy 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/604729/