Как говорили другие, Seq.sortBy
- это путь. Если вы используете FLinq для чтения некоторых данных из базы данных, то хорошей идеей будет включить сортировку как часть запроса к базе данных (заключенную в <@ .. @>
), чтобы сортировка выполнялась на сервере SQL:
let getDataFromDb (db: MyDB) Id =
<@ seq { big honking database/FLinq query
yield (sec, pm, sr, trade, tradeRec, i, pm_firm, files, lt)
|> Seq.sortBy (fun (_, _, _, _, _, i, _, _, _) -> i) @>
|> List.ofSeq
Чтобы сделать это немного лучше, вы можете вернуть кортеж, содержащий ключ и все другие элементы, как вложенный кортеж, например, key, (sec, pm, ..., lt)
, а затем просто отсортировать, используя первый элемент:
|> Seq.sortBy (fun (k, _) -> k)
(У меня были некоторые проблемы при использовании кортежей с LINQ to Entities, но я считаю, что он должен работать в LINQ to SQL).