总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'不匹配
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:
从你的新例子看,你似乎有一个元组列表.现在它取决于你想要搜索的元组中的哪个项目.