gpt4 book ai didi

c# - 如何从 F# 调用 Enumerable.Join?

转载 作者:太空狗 更新时间:2023-10-29 22:20:43 26 4
gpt4 key购买 nike

我有两个序列(元组),我需要对其进行连接:

  • 序列 1:[(City1 * Pin1),(City2 * Pin2),(City1 * Pin3),(City1 * Pin4)]
  • Seq 2:[(Pin1 * ProductA),(Pin2 * ProductB),(Pin1 * ProductC),(Pin2 * ProductA)]

进入序列(元组):

  • [(城市 1 * 产品 A),(城市 2 * 产品 B),(城市 * 产品 C),(城市 2 * 产品 A)...]

在 C# 中,我可以使用 Linq Join 扩展方法来执行此操作,例如:

seq1.Join(seq2, t => t.Item2, t=> t.Item1,
(t,u) => Tuple.Create(t.Item1, u.Item2))

我如何在 F# 中完成此操作?我在那里找不到关于 Seq 的连接。

最佳答案

编辑:实际上,您可以只使用 LINQ:

> open System.Linq;;
> let ans = seq1.Join(seq2, (fun t -> snd t), (fun t -> fst t), (fun t u -> (fst t, snd u)));;

为什么不使用 F# 的原生 Seq 函数?如果你看at the docsat this question你可以简单地使用这些而不是 LINQ。乘坐Seq.map2功能例如:

> let mapped = Seq.map2 (fun a b -> (fst a, snd b)) seq1 seq2;;

val it : seq<string * string> =
seq [("city1", "product1"); ("city2", "product2")]

应该给你你想要的,其中 seq1seq2 是你的第一个和第二个序列。

关于c# - 如何从 F# 调用 Enumerable.Join?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3777447/

26 4 0