如何在FSharp查询表达式中使用复合键子句编写连接?

tom*_*asK 5 f# join clause c#-to-f#

如何用F#中的复合键子句写这个C#join?:

join k in DataContext.Catalogs on
   new { id = o.IDENT, v = o.VZ } equals
   new { id = k.IDENT, v = k.VZ }
Run Code Online (Sandbox Code Playgroud)

这是类似的问题: 在F#3.0查询中多列组合,仍然没有得到答案.但我无法相信在FSharp中编写它并不容易.

谢谢

lat*_*kin 10

使用包含所需关键字段的元组:

query {
  for o in DataContext.OTable do
  join k in DataContext.Catalogs on
   ((o.IDENT, o.VZ) = (k.IDENT, k.VZ))
  select (o.IDENT, k.VZ)
}
Run Code Online (Sandbox Code Playgroud)

请注意,您无法在C#中创建具有命名字段的匿名类型,就像您可以在C#中一样.元组可能是最接近和最惯用的翻译.在这里看到Tomas的答案.