我有以下的短代碼,只計算一個文本的話:F# - 如何通過降序和升序來對列表進行排序?
[<EntryPoint>]
let main argv =
let text = File.ReadAllText("gettysburg.txt").ToLower()
Regex.Split(text, "\W+")
|> Seq.groupBy id
|> Seq.map (fun (k, grp) -> (k, grp |> Seq.length))
|> Seq.sortByDescending (fun (w, ln) -> (ln, w))
|> Seq.iter (fun (k, ln) -> printfn "%s\t%i" k ln)
排序函數首先通過分選發生的次數,然後按字母順序的話,這兩個下降。我需要按事件降序,然後按字母順序升序。
用LINQ很容易用OrderByDescending和ThenBy。我如何在F#中獲得相同的結果而不重複使用LINQ?
謝謝。
你可以使用LINQ的方法,就像你在C# – Carsten
的方式將:只是改變你的代碼到'Seq.sortBy(fun(w,ln) - >(-ln,w))'應該可以很好地工作 – Carsten
作爲快速回答:發生次數否定的Seq.sortBy,按字母順序排列的單詞:':> Seq.sortBy(fun(w,ln) - >(-ln,w))'。 –