在F#中,List.partition函数用于将列表中的元素分为满足给定条件和不满足给定条件的两个列表。
以下是使用LINQ的等价形式的代码示例:
open System.Linq
let numbers = [1; 2; 3; 4; 5]
let (evenNumbers, oddNumbers) = numbers
|> List.toSeq
|> Seq.partition (fun x -> x % 2 = 0)
|> (fun (seq1, seq2) -> (seq1 |> List.ofSeq, seq2 |> List.ofSeq))
printfn "Even numbers: %A" evenNumbers
printfn "Odd numbers: %A" oddNumbers
在上面的代码中,我们首先将F#列表转换为序列(Seq),然后使用Seq.partition函数将序列中的元素分为满足给定条件(x % 2 = 0)和不满足条件的两个序列。最后,我们将这两个序列转换回F#列表,并将它们分别赋给evenNumbers和oddNumbers变量。
输出结果:
Even numbers: [2; 4]
Odd numbers: [1; 3; 5]
请注意,由于F#的List.partition函数返回的是两个列表,而LINQ的Seq.partition函数返回的是两个序列,所以我们需要使用Seq.toSeq和Seq.ofSeq函数将序列转换为列表。