. GetXXX() , . Seq.initInfinite, (int -> 'T), Seq.map Seq.concat Seq.collect, :
myXmlType.GetSample().GetLevel1s()
|> Seq.filter (fun L1 -> L1.Name = "level1Name2")
|> Seq.collect (fun L1 -> L1.GetLevel2s())
|> Seq.iter (fun L2 -> printfn "%A %A" L2.A L2.B)
50 500
376 1065
10 10
700 700
. , , , ? , ( ), ( ).
let myA, myB =
myXmlType.GetSample().GetLevel1s()
|> Seq.tryFind (fun L1 -> L1.Name = "level1Name2")
|> function
| None -> failwith "level1Name2 not found"
| Some L1 ->
L1.GetLevel2s()
|> Seq.tryFind (fun L2 -> L2.Name = "level2Name4")
|> function
| None -> failwith "level2Name4 not found"
| Some L2 -> L2.A, L2.B
// val myB : int = 1065
// val myA : int = 376
Edit2. :
let myA, myB =
myXmlType.GetSample().GetLevel1s()
|> Seq.filter (fun L1 -> L1.Name = "level1Name2")
|> Seq.collect (fun L1 -> L1.GetLevel2s())
|> Seq.tryFind (fun L2 -> L2.Name = "level2Name4")
|> function
| None -> failwith "level2Name4 not found"
| Some L2 -> L2.A, L2.B