如何在F#中订购LIST

Ram*_*amy 3 f#

总F#n00b问题.如何对LIST数据结构进行排序?

编辑:对不起,我的数据结构实际上是一个列表.

也许我应该添加我的代码因为只是使用".sort"没有工作:

let getDataFromDb (db: MyDB) Id =
Query.query <@ seq { 
    big honking database/FLinq query
    yield  (sec, pm, sr, trade, tradeRec, i, pm_firm, files, lt)
} @> |> List.ofSeq
Run Code Online (Sandbox Code Playgroud)

当我将最后一行代码更改为:
} @> |> List.ofSeq.sortBy fst
我得到以下内容:

错误1未定义字段,构造函数或成员"sortBy"

呃,多么痛苦.我现在正在尝试这个:

|> List.ofSeq |> List.sortBy
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个:

错误1类型不匹配.期待a(Security*RoleContributor*RoleContributor*SuggestedTrade*SuggestedTradeRecommendation*Idea*RoleContributor*SupportingUploadedFile*LargeText)list - >'a a given a('b - >'c) - >'b list - >'b list The type' (安全*RoleContributor*RoleContributor*SuggestedTrade*SuggestedTradeRecommendation*Idea*RoleContributor*SupportingUploadedFile*LargeText)列表'与类型'' - >'b'不匹配

Bro*_*ass 5

Seq.sortBy会这样做.

但是排序意味着您在排序时知道完整序列的关键值,因此根据定义,您无法在无限序列上使用它.

编辑:列表的等效项具有相同的名称: List.sortBy

MSDN示例:

let sortedList2 = List.sortBy (fun elem -> abs elem) [1; 4; 8; -2; 5]
printfn "%A" sortedList2
Run Code Online (Sandbox Code Playgroud)

编辑2:

从你的新例子看,你似乎有一个元组列表.现在它取决于你想要搜索的元组中的哪个项目.