1
type Item1 = { Id: int; .... }
type Item2 = { Id: int; .... }
let list1: Item1 list = ....
let list2: Item2 list = ....
我需要過濾list1
這Id
存在list2
兩個列表。以下代碼不起作用。
list1 |> Seq.filter (fun l1 -> (List.exists (fun l2 -> l1.Id = l2.Id) list2))
它期望list2的類型爲Item1 list
。但是,下面的代碼工作。
list1 |> Seq.filter (fun l1 -> (list2 |> List.exists (fun l2 -> l1.Id = l2.Id)))
爲什麼?他們不只是兩種不同的方式來編寫具有相同功能的代碼嗎?
有趣的是,這兩個實際上在F#3.0上編譯得很好,但我不希望它們編譯。 –